Mercurial > prosody-modules
comparison mod_http_oauth2/mod_http_oauth2.lua @ 5404:1087f697c3f3
mod_http_oauth2: Strip unknown extra fields from client registration
We shouldn't sign things we don't understand!
RFC 7591 section-2 states:
> The authorization server MUST ignore any client metadata sent by the
> client that it does not understand (for instance, by silently removing
> unknown metadata from the client's registration record during
> processing).
Prevents grandfathering in of unvalidated data that might become used
later, especially since the 'additionalProperties' schema keyword was
removed in 698fef74ce53
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Tue, 02 May 2023 16:23:40 +0200 |
parents | c574aaaa4d57 |
children | c7a5caad28ef |
comparison
equal
deleted
inserted
replaced
5403:c574aaaa4d57 | 5404:1087f697c3f3 |
---|---|
770 return nil, oauth_error("invalid_client_metadata", "Invalid, insecure or inappropriate informative URI"); | 770 return nil, oauth_error("invalid_client_metadata", "Invalid, insecure or inappropriate informative URI"); |
771 end | 771 end |
772 end | 772 end |
773 end | 773 end |
774 | 774 |
775 -- Localized URIs should be secure too | |
776 for k, v in pairs(client_metadata) do | 775 for k, v in pairs(client_metadata) do |
777 if k:find"_uri#" then | 776 local base_k = k:match"^([^#]+)#" or k; |
777 if not registration_schema.properties[base_k] or k:find"^client_uri#" then | |
778 -- Ignore and strip unknown extra properties | |
779 client_metadata[k] = nil; | |
780 elseif k:find"_uri#" then | |
781 -- Localized URIs should be secure too | |
778 if not redirect_uri_allowed(v, client_uri, "web") then | 782 if not redirect_uri_allowed(v, client_uri, "web") then |
779 return nil, oauth_error("invalid_client_metadata", "Invalid, insecure or inappropriate informative URI"); | 783 return nil, oauth_error("invalid_client_metadata", "Invalid, insecure or inappropriate informative URI"); |
780 end | 784 end |
781 end | 785 end |
782 end | 786 end |