Mercurial > prosody-modules
diff mod_http_oauth2/mod_http_oauth2.lua @ 5357:eda3b078ba2c
mod_http_oauth2: Validate (unused at this point) localized URIs
Client registration may include keys of the form "some_uri#lang-code"
pointing to alternate language versions of the various URIs. We don't
use this yet but the same validation should apply.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sat, 22 Apr 2023 14:02:56 +0200 |
parents | 959dc350f2ad |
children | 0905d348bd34 |
line wrap: on
line diff
--- a/mod_http_oauth2/mod_http_oauth2.lua Sat Apr 22 14:06:41 2023 +0200 +++ b/mod_http_oauth2/mod_http_oauth2.lua Sat Apr 22 14:02:56 2023 +0200 @@ -670,6 +670,7 @@ software_version = { type = "string" }; }; -- Localized versions of descriptive properties and URIs + patternProperties = { ["^[a-z_]+_uri#"] = { type = "string"; format = "uri"; pattern = "^https:" } }; additionalProperties = { type = "string" }; } @@ -706,6 +707,18 @@ end end + -- Localized URIs should be secure too + for k, v in pairs(client_metadata) do + if k:find"_uri#" then + local uri = url.parse(v); + if not uri or uri.scheme ~= "https" then + return nil, oauth_error("invalid_request", "Missing, invalid or insecure "..k); + elseif uri.host ~= client_uri.host then + return nil, oauth_error("invalid_request", "All URIs must use the same hostname as client_uri"); + end + end + end + -- Ensure each signed client_id JWT is unique, short ID and issued at -- timestamp should be sufficient to rule out brute force attacks client_metadata.nonce = id.short();