<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <link>http://hg.omfa.de/prosody-modules/</link>
    <language>en-us</language>

    <title>prosody-modules: mod_http_oauth2/mod_http_oauth2.lua history</title>
    <description>mod_http_oauth2/mod_http_oauth2.lua revision history</description>
    <item>
    <title>mod_http_oauth2: Normalize the password in the password grant</title>
    <link>http://hg.omfa.de/prosody-modules/log/3b69df385f66/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Normalize the password in the password grant<br/>
<br/>
Otherwise entering passwords in non-normal form might lead to<br/>
authentication failures.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Wed, 08 Apr 2026 23:12:13 +0200</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Normalize username in password grant</title>
    <link>http://hg.omfa.de/prosody-modules/log/ff55e93be449/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Normalize username in password grant<br/>
<br/>
Otherwise authentication may fail if provided a non-normalized username<br/>
<br/>
Introduced in c1b94dd6e53b]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Wed, 08 Apr 2026 23:08:39 +0200</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Make error template optional</title>
    <link>http://hg.omfa.de/prosody-modules/log/7fe484e7b574/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Make error template optional<br/>
<br/>
Would fall back to mod_http_errors]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Wed, 18 Feb 2026 16:35:30 +0100</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Remove unused function</title>
    <link>http://hg.omfa.de/prosody-modules/log/3f0970babd67/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Remove unused function<br/>
<br/>
Leftover from something]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Tue, 15 Jul 2025 21:56:56 +0200</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Fix passing roles and scopes the same way to template</title>
    <link>http://hg.omfa.de/prosody-modules/log/c96bd4156664/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Fix passing roles and scopes the same way to template]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Tue, 15 Jul 2025 21:55:25 +0200</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Show scope descriptions</title>
    <link>http://hg.omfa.de/prosody-modules/log/6e80b2cb5fe6/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Show scope descriptions<br/>
<br/>
This should help the user understand and provide _informed_ consent,<br/>
although the texts can certainly be improved. Explaining these scopes is<br/>
non-trivial.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Tue, 15 Jul 2025 16:28:40 +0200</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Only issue id_token when granted openid scope</title>
    <link>http://hg.omfa.de/prosody-modules/log/9b03238d4e0e/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Only issue id_token when granted openid scope<br/>
<br/>
OpenID Connect Core 1.0 states that OIDC is only being done if the<br/>
&quot;openid&quot; scope is included.<br/>
<br/>
https://openid.net/specs/openid-connect-core-1_0.html#rfc.section.3.1.2.1<br/>
<br/>
Less details given out by default is good for privacy and byte count.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Tue, 15 Jul 2025 01:46:38 +0200</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Avoid tripping on redirect URIs when omitted</title>
    <link>http://hg.omfa.de/prosody-modules/log/578fa5d97daa/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Avoid tripping on redirect URIs when omitted<br/>
<br/>
Since device clients don't need to include redirect_uris, this function<br/>
needs to handle that case and not try to index the missing array.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Thu, 03 Jul 2025 16:18:38 +0200</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Reject invalid attempt to register client without credentials</title>
    <link>http://hg.omfa.de/prosody-modules/log/17d9533f7596/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Reject invalid attempt to register client without credentials<br/>
<br/>
The implicit flow works without a client_secret since the token is<br/>
delivered directly, but all other currently supported grant types<br/>
require client to authenticate using credentials, so it makes no sense<br/>
to not issue credentials then.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Thu, 03 Jul 2025 15:45:00 +0200</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Only require redirect URIs when using grant types that need it</title>
    <link>http://hg.omfa.de/prosody-modules/log/6ea80b73d8f2/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Only require redirect URIs when using grant types that need it<br/>
<br/>
In the Device flow, no redirect URI is used because the client instead<br/>
receives responses by polling. It is therefore unnecessary to enforce a<br/>
requirement that these include redirect URI(s).]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Thu, 03 Jul 2025 15:42:42 +0200</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Comment on origin of a constant URI</title>
    <link>http://hg.omfa.de/prosody-modules/log/5dc4ec836ce2/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Comment on origin of a constant URI]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Thu, 03 Jul 2025 15:34:57 +0200</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Check grant type before issuing refresh token</title>
    <link>http://hg.omfa.de/prosody-modules/log/4f9b42c53d0f/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Check grant type before issuing refresh token<br/>
<br/>
This prevents even issuing a refresh token to a client that has not<br/>
registered the corresponding grant type.<br/>
<br/>
The grant type dispatcher also checks before invoking the refresh token<br/>
grant type handler.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Thu, 03 Jul 2025 15:34:42 +0200</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Remove defaults that should be included on clients</title>
    <link>http://hg.omfa.de/prosody-modules/log/dfc035ecabb4/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Remove defaults that should be included on clients<br/>
<br/>
Since create_client() adds these fields if they are missing, we can<br/>
assume that they are present.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Thu, 03 Jul 2025 12:32:43 +0200</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Handle absent array argument in array member check</title>
    <link>http://hg.omfa.de/prosody-modules/log/e174e12549e1/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Handle absent array argument in array member check<br/>
<br/>
Allows this argument to be optional and prevents an error attempting to<br/>
obtain the length of nil.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Thu, 03 Jul 2025 12:27:32 +0200</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Use numeric for loop instead of ipairs</title>
    <link>http://hg.omfa.de/prosody-modules/log/ebcf612da2b1/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Use numeric for loop instead of ipairs<br/>
<br/>
Pedantic attempted optimization, reducing function calls.<br/>
<br/>
I didn't even measure, only vaguely recall that this is faster in PUC Lua.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Thu, 03 Jul 2025 12:14:53 +0200</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Assume Prosody 13.0+ roles are available</title>
    <link>http://hg.omfa.de/prosody-modules/log/63ef69b2f046/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Assume Prosody 13.0+ roles are available<br/>
<br/>
Per the README, 0.12 is not supported, so we should not need to worry<br/>
about this. Plus it is assumed to be present elsewhere and that would<br/>
throw errors.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Wed, 02 Jul 2025 16:15:32 +0200</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Use cheaper array member check</title>
    <link>http://hg.omfa.de/prosody-modules/log/fe797da37174/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Use cheaper array member check<br/>
<br/>
This one does not create two new tables and then throw them away.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Wed, 02 Jul 2025 15:55:05 +0200</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Support the &quot;offline_access&quot; for granting refresh tokens</title>
    <link>http://hg.omfa.de/prosody-modules/log/8108aec64fb9/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Support the &quot;offline_access&quot; for granting refresh tokens<br/>
<br/>
Refresh tokens are no longer included unless this scope is requested and<br/>
granted.<br/>
<br/>
BC: This prevents existing implementations that rely on always getting<br/>
the refresh token from continuing.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Wed, 02 Jul 2025 15:53:02 +0200</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Handle case of device state having expired</title>
    <link>http://hg.omfa.de/prosody-modules/log/e1c54de06905/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Handle case of device state having expired<br/>
<br/>
If for some reason the `code` was nil, it would have thrown an error<br/>
attempting to index it.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 13 Jun 2025 21:57:38 +0200</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Refactor to return all errors to Device clients</title>
    <link>http://hg.omfa.de/prosody-modules/log/aae94f82c56e/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Refactor to return all errors to Device clients<br/>
<br/>
Previously only a single case was returned to device clients, now all<br/>
error conditions that pass trough the error_response() are covered.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 13 Jun 2025 21:30:56 +0200</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Add comment referencing RFC 8176</title>
    <link>http://hg.omfa.de/prosody-modules/log/28fd42866be9/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Add comment referencing RFC 8176<br/>
<br/>
Took a while to recall where this was defined.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sat, 07 Jun 2025 22:13:41 +0200</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Reorder metadata by source</title>
    <link>http://hg.omfa.de/prosody-modules/log/7cf1fcac9b94/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Reorder metadata by source<br/>
<br/>
Following the order in which field are described in each specification.<br/>
Also fills in `nil` fields that are defined but not used in this module.<br/>
Tweaks some values to reflect current behavior.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sat, 07 Jun 2025 22:02:18 +0200</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Fire authentication events in password grant</title>
    <link>http://hg.omfa.de/prosody-modules/log/7e4238d2989c/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Fire authentication events in password grant<br/>
<br/>
Allows for e.g. audit logging and rate limiting modules to catch login<br/>
attempts, successful or otherwise, that come through here.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Wed, 04 Jun 2025 17:32:19 +0200</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Return instead of throwing errors</title>
    <link>http://hg.omfa.de/prosody-modules/log/b7eb7d256939/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Return instead of throwing errors<br/>
<br/>
error() or assert() does not get handled correctly]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Tue, 03 Jun 2025 17:20:52 +0200</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Forbid inclusion of disabled grant and response types</title>
    <link>http://hg.omfa.de/prosody-modules/log/5b269511ade7/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Forbid inclusion of disabled grant and response types<br/>
<br/>
Better than asserting that at least one allowed grant or response type<br/>
is included.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Tue, 03 Jun 2025 17:04:19 +0200</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Allow zero response types (e.g. with the password grant)</title>
    <link>http://hg.omfa.de/prosody-modules/log/ef81c67e1ae7/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Allow zero response types (e.g. with the password grant)]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Tue, 03 Jun 2025 16:59:07 +0200</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Remove now redundant client_id check from remaining grant handlers</title>
    <link>http://hg.omfa.de/prosody-modules/log/b460b2a65f0b/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Remove now redundant client_id check from remaining grant handlers<br/>
<br/>
Missed these in 2505542c6c50]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Tue, 03 Jun 2025 01:11:37 +0200</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Refactor client grant and response type checks</title>
    <link>http://hg.omfa.de/prosody-modules/log/7b3316ac24b3/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Refactor client grant and response type checks<br/>
<br/>
Iterating over an array instead of creating a Set ought to create fewer<br/>
short-lived tables. The arrays are usually very short so shouldn't be a<br/>
performance issue.<br/>
<br/>
Moves validation earlier as to do less work before discovering that it<br/>
can't proceed anyway.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Mon, 02 Jun 2025 22:21:44 +0200</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Enforce the registered grant types</title>
    <link>http://hg.omfa.de/prosody-modules/log/9d88c3d9eea5/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Enforce the registered grant types<br/>
<br/>
Thus a client can limit itself to certain grant types.<br/>
Not sure if this prevents any attacks, but what was the point of<br/>
including this in the registration if it was not going to be enforced?<br/>
<br/>
This became easier to do with client_id being available earlier.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Mon, 02 Jun 2025 20:55:20 +0200</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Remove unused variable [luacheck]</title>
    <link>http://hg.omfa.de/prosody-modules/log/b63202d66238/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Remove unused variable [luacheck]]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sat, 31 May 2025 16:07:29 +0200</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Fix indentation</title>
    <link>http://hg.omfa.de/prosody-modules/log/9014c95c4549/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Fix indentation]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sat, 31 May 2025 16:07:18 +0200</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Deduplicate client authentication</title>
    <link>http://hg.omfa.de/prosody-modules/log/2505542c6c50/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Deduplicate client authentication<br/>
<br/>
Since it is always performed by each grant_type_handler, it can now be<br/>
done earlier before dispatching to them.<br/>
<br/>
A note on 4f0ed0e3ad5a: Requiring a client in the password grant broke<br/>
use without registering a client, e.g. the Snikket Web Portal.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sat, 31 May 2025 13:36:39 +0200</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Allow JIDs as username for password grant</title>
    <link>http://hg.omfa.de/prosody-modules/log/ab14e7ecb82f/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Allow JIDs as username for password grant]]></description>
    <author>&#109;&#97;&#103;&#105;&#99;&#102;&#101;&#108;&#105;&#120;&#32;&#60;&#102;&#101;&#108;&#105;&#120;&#64;&#102;&#101;&#108;&#105;&#120;&#45;&#122;&#97;&#117;&#98;&#101;&#114;&#101;&#114;&#46;&#100;&#101;&#62;</author>
    <pubDate>Sat, 19 Apr 2025 20:32:37 +0200</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Pass client to token to enable introspection</title>
    <link>http://hg.omfa.de/prosody-modules/log/a931a95e363e/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Pass client to token to enable introspection]]></description>
    <author>&#109;&#97;&#103;&#105;&#99;&#102;&#101;&#108;&#105;&#120;&#32;&#60;&#102;&#101;&#108;&#105;&#120;&#64;&#102;&#101;&#108;&#105;&#120;&#45;&#122;&#97;&#117;&#98;&#101;&#114;&#101;&#114;&#46;&#100;&#101;&#62;</author>
    <pubDate>Sat, 19 Apr 2025 18:30:57 +0200</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Change password grant to take username instead of JID [BC]</title>
    <link>http://hg.omfa.de/prosody-modules/log/c1b94dd6e53b/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Change password grant to take username instead of JID [BC]<br/>
<br/>
For consistency since the other grant types do not accept JIDs<br/>
<br/>
This has been like this from the beginning of this module.<br/>
<br/>
Changing this breaks backwards-compatibility with anything that relied<br/>
on the JID as username, but things shouldn't really be using the<br/>
password grant anyway as it is insecure.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sat, 19 Apr 2025 16:25:24 +0200</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Require client authentication for password grant</title>
    <link>http://hg.omfa.de/prosody-modules/log/4f0ed0e3ad5a/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Require client authentication for password grant]]></description>
    <author>&#109;&#97;&#103;&#105;&#99;&#102;&#101;&#108;&#105;&#120;&#32;&#60;&#102;&#101;&#108;&#105;&#120;&#64;&#102;&#101;&#108;&#105;&#120;&#45;&#122;&#97;&#117;&#98;&#101;&#114;&#101;&#114;&#46;&#100;&#101;&#62;</author>
    <pubDate>Sat, 19 Apr 2025 16:42:21 +0200</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Reorder HTTP handler (noop)</title>
    <link>http://hg.omfa.de/prosody-modules/log/a1a33f0f6f6e/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Reorder HTTP handler (noop)<br/>
<br/>
More in the order they might be used, related paths together.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sun, 16 Mar 2025 21:56:25 +0100</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Fix check for userinfo endpoint handler</title>
    <link>http://hg.omfa.de/prosody-modules/log/277ccafb4826/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Fix check for userinfo endpoint handler<br/>
<br/>
It was checking whether the wrong handler exists. It could have made<br/>
sense if there was some dependency between them but there isn't.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Thu, 31 Oct 2024 21:49:32 +0100</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Fix error due to mistake in 5f8a306c8306</title>
    <link>http://hg.omfa.de/prosody-modules/log/7308ec4aaad1/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Fix error due to mistake in 5f8a306c8306<br/>
<br/>
Was passing the table instead of the host]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sat, 07 Sep 2024 15:20:23 +0200</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Simplify negation in condition</title>
    <link>http://hg.omfa.de/prosody-modules/log/538f468f9a65/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Simplify negation in condition]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sat, 31 Aug 2024 14:46:33 +0200</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Require a stringprepped host part of URLs</title>
    <link>http://hg.omfa.de/prosody-modules/log/5f8a306c8306/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Require a stringprepped host part of URLs]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sat, 31 Aug 2024 13:30:55 +0200</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Ensure URL ports are integer in correct range</title>
    <link>http://hg.omfa.de/prosody-modules/log/e8bf46a7bb27/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Ensure URL ports are integer in correct range<br/>
<br/>
LuaSocket is weird and thinks ports should be strings]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Thu, 29 Aug 2024 18:03:23 +0200</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Reject URLs with 'userinfo' part (thanks mimi89999)</title>
    <link>http://hg.omfa.de/prosody-modules/log/97375a78d2b5/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Reject URLs with 'userinfo' part (thanks mimi89999)<br/>
<br/>
The LuaSocket parser supports these but they're deprecated without<br/>
replacement by RFC 3986<br/>
<br/>
&gt; Use of the format &quot;user:password&quot; in the userinfo field is deprecated<br/>
<br/>
Allowing it in OAuth2 URLs is probably bad from a security perspective.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Thu, 29 Aug 2024 16:02:46 +0200</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Guard against malformed authorization header</title>
    <link>http://hg.omfa.de/prosody-modules/log/46394b327d17/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Guard against malformed authorization header<br/>
<br/>
Prevent error on calling :lower() afterwards]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Mon, 15 Jul 2024 20:02:25 +0200</pubDate>
</item>
<item>
    <title>mod_http_oauth2: HTTP authentication schemes are case-insensitive</title>
    <link>http://hg.omfa.de/prosody-modules/log/ca3479c67e48/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: HTTP authentication schemes are case-insensitive<br/>
<br/>
According to RFC 9110 section 11<br/>
&gt; It uses a case-insensitive token to identify the authentication scheme]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sun, 14 Jul 2024 17:47:06 +0200</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Reflect changes to defaults etc</title>
    <link>http://hg.omfa.de/prosody-modules/log/761142ee0ff2/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Reflect changes to defaults etc<br/>
<br/>
- Resource owner password grant was disabled by default<br/>
- Tokens now include a hash of client_id making it possible to be<br/>
	reasonable sure that they were issued to a particular client]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Tue, 05 Mar 2024 00:32:00 +0100</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Reuse JWT issuance time as substitute for auth time</title>
    <link>http://hg.omfa.de/prosody-modules/log/b109773ce6fe/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Reuse JWT issuance time as substitute for auth time<br/>
<br/>
Makes the token shorter. Since iat and auth_time are generated at about<br/>
the same time they would only differ by a few microseconds anyway.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Wed, 24 Jan 2024 17:55:26 +0100</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Reduce log level for error delivery via redirect</title>
    <link>http://hg.omfa.de/prosody-modules/log/c75328aeaba3/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Reduce log level for error delivery via redirect<br/>
<br/>
This is supposed to be normal in OAuth2, not really deserving a warning<br/>
log message.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sat, 23 Dec 2023 00:06:35 +0100</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Tweak fallback error text</title>
    <link>http://hg.omfa.de/prosody-modules/log/fdf3056021dc/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Tweak fallback error text<br/>
<br/>
Since the oauth error is more like the error condition, a symbolic error<br/>
code, not the most human-friendly. Many error cases do have<br/>
human-readable error descriptions that should be fine on their own, or<br/>
changed to be.<br/>
<br/>
As a fallback, capitalize the error name.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sat, 23 Dec 2023 00:01:30 +0100</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Improve registration schema documentation parts</title>
    <link>http://hg.omfa.de/prosody-modules/log/03477980f1a9/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Improve registration schema documentation parts]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Thu, 21 Dec 2023 18:26:42 +0100</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Do not enforce PKCE on Device and OOB flows</title>
    <link>http://hg.omfa.de/prosody-modules/log/93d6e9026c1b/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Do not enforce PKCE on Device and OOB flows<br/>
<br/>
PKCE does not appear to be used with the Device flow. I have found no<br/>
mention of any interaction between those standards. Since no data is<br/>
delivered via redirects in these cases, PKCE may not serve any purpose.<br/>
<br/>
This is mostly a problem because we reuse the authorization code to<br/>
implement the Device and OOB flows.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 15 Dec 2023 12:10:07 +0100</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Add logger to &quot;session&quot; for auth event</title>
    <link>http://hg.omfa.de/prosody-modules/log/72799c330986/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Add logger to &quot;session&quot; for auth event<br/>
<br/>
So many assumptions in so many other modules about auth-success/fail]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Mon, 04 Dec 2023 21:36:35 +0100</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Move some code earlier</title>
    <link>http://hg.omfa.de/prosody-modules/log/990c6adc4407/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Move some code earlier]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Mon, 04 Dec 2023 21:07:54 +0100</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Reject unparsable URLs</title>
    <link>http://hg.omfa.de/prosody-modules/log/a967bb4972c5/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Reject unparsable URLs<br/>
<br/>
This used to be caught by luaPattern=https:// in the schema but that's<br/>
been removed for some reason]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sun, 03 Dec 2023 23:51:54 +0100</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Return validation output added in trunk rev 72d7830505f0</title>
    <link>http://hg.omfa.de/prosody-modules/log/b8a2b3ebe792/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Return validation output added in trunk rev 72d7830505f0<br/>
<br/>
It's not fun at all to try to register a client and only get back<br/>
&quot;failed schema validation&quot;, this should help with that.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sun, 03 Dec 2023 23:44:18 +0100</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Handle login_hint without @hostpart</title>
    <link>http://hg.omfa.de/prosody-modules/log/87920d436cb4/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Handle login_hint without @hostpart<br/>
<br/>
Makes life easier for the client when it does not know the full JID,<br/>
which might not have the same hostpart as the authorization server URL.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sun, 03 Dec 2023 15:07:50 +0100</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Fire authentication events on login form</title>
    <link>http://hg.omfa.de/prosody-modules/log/c27eaa7117d6/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Fire authentication events on login form<br/>
<br/>
For e.g. mod_audit_auth to use.<br/>
<br/>
A bit hacky because upon review many modules don't seem to handle the<br/>
lack of an XMPP session in the event payload.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 01 Dec 2023 22:40:41 +0100</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Comment on authorization code storage</title>
    <link>http://hg.omfa.de/prosody-modules/log/d563a6b0dfb7/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Comment on authorization code storage]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 01 Dec 2023 21:35:25 +0100</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Make defaults more secure</title>
    <link>http://hg.omfa.de/prosody-modules/log/426c42c11f89/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Make defaults more secure<br/>
<br/>
This should be fine since we don't have a lot of clients to be<br/>
backwards-compatible with.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Tue, 14 Nov 2023 23:19:19 +0100</pubDate>
</item>
<item>
    <title>mod_http_oauth2: Skip consent screen if requested by client and same scopes already granted</title>
    <link>http://hg.omfa.de/prosody-modules/log/8488ebde5739/mod_http_oauth2/mod_http_oauth2.lua</link>
    <description><![CDATA[mod_http_oauth2: Skip consent screen if requested by client and same scopes already granted<br/>
<br/>
This follows the intent behind the OpenID Connect 'prompt' parameter<br/>
when it does not include the 'consent' keyword, that is the client<br/>
wishes to skip the consent screen. If the user has already granted the<br/>
exact same scopes to the exact same client in the past, then one can<br/>
assume that they may grant it again.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Tue, 14 Nov 2023 23:03:37 +0100</pubDate>
</item>

  </channel>
</rss>
