Mercurial > prosody-modules
comparison mod_http_oauth2/mod_http_oauth2.lua @ 6205:c1b94dd6e53b
mod_http_oauth2: Change password grant to take username instead of JID [BC]
For consistency since the other grant types do not accept JIDs
This has been like this from the beginning of this module.
Changing this breaks backwards-compatibility with anything that relied
on the JID as username, but things shouldn't really be using the
password grant anyway as it is insecure.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sat, 19 Apr 2025 16:25:24 +0200 |
| parents | 4f0ed0e3ad5a |
| children | a931a95e363e |
comparison
equal
deleted
inserted
replaced
| 6204:4f0ed0e3ad5a | 6205:c1b94dd6e53b |
|---|---|
| 417 if not verify_client_secret(params.client_id, params.client_secret) then | 417 if not verify_client_secret(params.client_id, params.client_secret) then |
| 418 module:log("debug", "client_secret mismatch"); | 418 module:log("debug", "client_secret mismatch"); |
| 419 return oauth_error("invalid_client", "incorrect credentials"); | 419 return oauth_error("invalid_client", "incorrect credentials"); |
| 420 end | 420 end |
| 421 | 421 |
| 422 local request_jid = assert(params.username, oauth_error("invalid_request", "missing 'username' (JID)")); | 422 local request_username = assert(params.username, oauth_error("invalid_request", "missing 'username'")); |
| 423 local request_password = assert(params.password, oauth_error("invalid_request", "missing 'password'")); | 423 local request_password = assert(params.password, oauth_error("invalid_request", "missing 'password'")); |
| 424 local request_username, request_host, request_resource = jid.prepped_split(request_jid); | 424 |
| 425 | 425 if not usermanager.test_password(request_username, module.host, request_password) then |
| 426 if not (request_username and request_host) or request_host ~= module.host then | |
| 427 return oauth_error("invalid_request", "invalid JID"); | |
| 428 end | |
| 429 if not usermanager.test_password(request_username, request_host, request_password) then | |
| 430 return oauth_error("invalid_grant", "incorrect credentials"); | 426 return oauth_error("invalid_grant", "incorrect credentials"); |
| 431 end | 427 end |
| 432 | 428 |
| 433 local granted_jid = jid.join(request_username, request_host, request_resource); | 429 local granted_jid = jid.join(request_username, module.host); |
| 434 local granted_scopes, granted_role = filter_scopes(request_username, params.scope); | 430 local granted_scopes, granted_role = filter_scopes(request_username, params.scope); |
| 435 return json.encode(new_access_token(granted_jid, granted_role, granted_scopes, nil)); | 431 return json.encode(new_access_token(granted_jid, granted_role, granted_scopes, nil)); |
| 436 end | 432 end |
| 437 | 433 |
| 438 function response_type_handlers.code(client, params, granted_jid, id_token) | 434 function response_type_handlers.code(client, params, granted_jid, id_token) |
