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

    <title>prosody-hg: plugins/mod_tokenauth.lua history</title>
    <description>plugins/mod_tokenauth.lua revision history</description>
    <item>
    <title>mod_tokenauth: Fix expiry lasting one second too much</title>
    <link>http://hg.omfa.de/prosody-hg/log/94462d8f2fa9/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[mod_tokenauth: Fix expiry lasting one second too much<br/>
<br/>
Because the code was using `&lt; now` in a lot of places, things expiring at the current second<br/>
wouldn't be marked as expired. It isn't noticeable in real-world scenarios but I wanted to<br/>
create OAuth 2.0 tokens valid for 0 second in integration tests and it wasn't possible.<br/>
<br/>
By using `&lt;=` instead of `&lt;`, we make sure tokens don't live a single millisecond more than<br/>
what they are supposed to.]]></description>
    <author>&#82;&#233;&#109;&#105;&#32;&#66;&#97;&#114;&#100;&#111;&#110;&#32;&#60;&#114;&#101;&#109;&#105;&#64;&#114;&#101;&#109;&#105;&#98;&#97;&#114;&#100;&#111;&#110;&#46;&#110;&#97;&#109;&#101;&#62;</author>
    <pubDate>Sat, 01 Feb 2025 20:45:28 +0100</pubDate>
</item>
<item>
    <title>mod_tokenauth: Ignore invalid grants in storage that have no id</title>
    <link>http://hg.omfa.de/prosody-hg/log/bbbda8819331/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[mod_tokenauth: Ignore invalid grants in storage that have no id]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Wed, 29 Nov 2023 17:51:34 +0000</pubDate>
</item>
<item>
    <title>mod_tokenauth: Include more details in debug logs</title>
    <link>http://hg.omfa.de/prosody-hg/log/19c814d4dd3a/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[mod_tokenauth: Include more details in debug logs<br/>
<br/>
Had a hard time following what was happening when it did not specify<br/>
which grant or token was being removed.]]></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, 12 Nov 2023 00:33:57 +0100</pubDate>
</item>
<item>
    <title>mod_tokenauth: Fix saving grants after clearing expired tokens</title>
    <link>http://hg.omfa.de/prosody-hg/log/852a61c720d0/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[mod_tokenauth: Fix saving grants after clearing expired tokens<br/>
<br/>
Previously the whole grant was deleted if it found one expired toke,<br/>
which was not indented.]]></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, 05 Nov 2023 16:10:40 +0100</pubDate>
</item>
<item>
    <title>mod_tokenauth: Set name/description on cleanup job</title>
    <link>http://hg.omfa.de/prosody-hg/log/c34266c061c9/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[mod_tokenauth: Set name/description on cleanup job]]></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, 21 Oct 2023 12:56:39 +0200</pubDate>
</item>
<item>
    <title>mod_tokenauth: Save grant after removing expired tokens</title>
    <link>http://hg.omfa.de/prosody-hg/log/5db61e0dfc62/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[mod_tokenauth: Save grant after removing expired tokens<br/>
<br/>
Ensures the periodic cleanup really does remove expired tokens.]]></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, 21 Oct 2023 12:33:55 +0200</pubDate>
</item>
<item>
    <title>mod_tokenauth: Periodically clear out expired tokens and grants</title>
    <link>http://hg.omfa.de/prosody-hg/log/ddfe07041fc5/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[mod_tokenauth: Periodically clear out expired tokens and grants<br/>
<br/>
This should ensure expired grants eventually disappear.]]></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, 09 Oct 2023 20:31:35 +0200</pubDate>
</item>
<item>
    <title>mod_tokenauth: Delete grants without tokens after period</title>
    <link>http://hg.omfa.de/prosody-hg/log/a1c927323f06/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[mod_tokenauth: Delete grants without tokens after period<br/>
<br/>
Generally it is expected that a grant would have at least one token as<br/>
long as the grant is in active use.<br/>
<br/>
Refresh tokens issued by mod_http_oauth2 have a lifetime of one week by<br/>
default, so the idea here is that if that refresh token expired and<br/>
another week goes by without the grant being used, then the whole grant<br/>
can be removed.]]></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, 16 Oct 2023 23:51:52 +0200</pubDate>
</item>
<item>
    <title>mod_tokenauth: Clear expired tokens on grant retrieval</title>
    <link>http://hg.omfa.de/prosody-hg/log/8535a6105919/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[mod_tokenauth: Clear expired tokens on grant retrieval]]></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, 09 Oct 2023 20:28:37 +0200</pubDate>
</item>
<item>
    <title>mod_tokenauth: Delete grants in the wrong formats on retrieval</title>
    <link>http://hg.omfa.de/prosody-hg/log/56c1d2498d66/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[mod_tokenauth: Delete grants in the wrong formats on retrieval]]></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, 09 Oct 2023 20:26:30 +0200</pubDate>
</item>
<item>
    <title>mod_tokenauth: Fix revoking a single token without revoking whole grant</title>
    <link>http://hg.omfa.de/prosody-hg/log/2e04d54fb013/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[mod_tokenauth: Fix revoking a single token without revoking whole grant<br/>
<br/>
This appears to have been a copy-paste of the grant revocation function,<br/>
or maybe the other way around. Either way, it deleted the whole grant<br/>
instead of the individual token as might be expected.]]></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, 23 Jul 2023 02:54:49 +0200</pubDate>
</item>
<item>
    <title>plugins: Switch to :get_option_period() for time range options</title>
    <link>http://hg.omfa.de/prosody-hg/log/c8d949cf6b09/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[plugins: Switch to :get_option_period() for time range options<br/>
<br/>
Improves readability (&quot;1 day&quot; vs 86400) and centralizes validation.]]></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 Jul 2023 20:49:33 +0200</pubDate>
</item>
<item>
    <title>mod_tokenauth: Support selection of _no_ role at all</title>
    <link>http://hg.omfa.de/prosody-hg/log/a1ba503610ed/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[mod_tokenauth: Support selection of _no_ role at all<br/>
<br/>
If a grant does not have a role, we should not go and make one up.<br/>
While not very useful for XMPP if you can't even login, it may be useful<br/>
for OAuth2/OIDC.]]></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, 07 May 2023 20:34:07 +0200</pubDate>
</item>
<item>
    <title>mod_tokenauth: Return error instead of session for token without role</title>
    <link>http://hg.omfa.de/prosody-hg/log/65d2ff6e674e/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[mod_tokenauth: Return error instead of session for token without role<br/>
<br/>
Such a session triggers errors in module:may or other places since it is<br/>
generally expected that a session must have a role.]]></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, 07 May 2023 20:33:03 +0200</pubDate>
</item>
<item>
    <title>mod_tokenauth: Fix parsing binary part of tokens</title>
    <link>http://hg.omfa.de/prosody-hg/log/794a5ad5495e/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[mod_tokenauth: Fix parsing binary part of tokens<br/>
<br/>
Fixes parsing of tokens that happen to have a `;` in their secret part,<br/>
otherwise it splits there and the later bit goes into the username and<br/>
hitting the &quot;Invalid token in storage&quot; 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>Wed, 12 Apr 2023 11:43:32 +0200</pubDate>
</item>
<item>
    <title>mod_tokenauth: Only check if expiry of expiring tokens</title>
    <link>http://hg.omfa.de/prosody-hg/log/9e5802b45b9e/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[mod_tokenauth: Only check if expiry of expiring tokens<br/>
<br/>
Some tokens, e.g. OAuth2 refresh tokens, might not have their lifetime<br/>
explicitly bounded here, but rather be bounded by the lifetime of<br/>
something else, like the OAuth2 client.<br/>
<br/>
Open question: Would it be better to enforce a lifetime on all tokens?]]></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, 12 Apr 2023 10:21:32 +0200</pubDate>
</item>
<item>
    <title>mod_tokenauth: Add API method to revoke a grant by id</title>
    <link>http://hg.omfa.de/prosody-hg/log/7558fd152459/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[mod_tokenauth: Add API method to revoke a grant by id<br/>
<br/>
We probably want to refactor revoke_token() to use this one in the future.]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Wed, 05 Apr 2023 15:33:56 +0100</pubDate>
</item>
<item>
    <title>mod_tokenauth: Add API to inspect individual grants or all of a user's grants</title>
    <link>http://hg.omfa.de/prosody-hg/log/3e454af3615d/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[mod_tokenauth: Add API to inspect individual grants or all of a user's grants]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Wed, 29 Mar 2023 17:15:33 +0100</pubDate>
</item>
<item>
    <title>mod_tokenauth: Move grant validation to a reusable function</title>
    <link>http://hg.omfa.de/prosody-hg/log/a70ff0c524c9/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[mod_tokenauth: Move grant validation to a reusable function]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Wed, 29 Mar 2023 17:14:45 +0100</pubDate>
</item>
<item>
    <title>mod_tokenauth: fix traceback if password has never been changed</title>
    <link>http://hg.omfa.de/prosody-hg/log/d943733c6d01/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[mod_tokenauth: fix traceback if password has never been changed<br/>
<br/>
By checking the password_updated_at for non-nilness before using it,<br/>
we avoid a nasty crash :-).]]></description>
    <author>&#74;&#111;&#110;&#97;&#115;&#32;&#83;&#99;&#104;&#228;&#102;&#101;&#114;&#32;&#60;&#106;&#111;&#110;&#97;&#115;&#64;&#119;&#105;&#101;&#108;&#105;&#99;&#107;&#105;&#46;&#110;&#97;&#109;&#101;&#62;</author>
    <pubDate>Tue, 28 Mar 2023 21:25:54 +0200</pubDate>
</item>
<item>
    <title>mod_tokenauth: Fire events on grant creation and revocation</title>
    <link>http://hg.omfa.de/prosody-hg/log/34ed17ef1c1a/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[mod_tokenauth: Fire events on grant creation and revocation]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Tue, 28 Mar 2023 10:43:09 +0100</pubDate>
</item>
<item>
    <title>mod_tokenauth: Fix storage API mistake in revocation</title>
    <link>http://hg.omfa.de/prosody-hg/log/c7253174503e/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[mod_tokenauth: Fix storage API mistake in revocation]]></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, 28 Mar 2023 00:30:18 +0200</pubDate>
</item>
<item>
    <title>mod_tokenauth: Fix traceback when checking expiry of tokens with no expiry</title>
    <link>http://hg.omfa.de/prosody-hg/log/c87ac7d1967f/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[mod_tokenauth: Fix traceback when checking expiry of tokens with no expiry]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Mon, 27 Mar 2023 20:51:07 +0100</pubDate>
</item>
<item>
    <title>mod_tokenauth: Refactor API to separate tokens and grants</title>
    <link>http://hg.omfa.de/prosody-hg/log/601d9a375b86/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[mod_tokenauth: Refactor API to separate tokens and grants<br/>
<br/>
This is another iteration on top of the previous sub-tokens work. Essentially,<br/>
the concept of a &quot;parent token&quot; has been replaced with the concept of a<br/>
&quot;grant&quot; to which all tokens now belong. The grant does not have any tokens<br/>
when first created, but the create_token() call can add them.]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Mon, 27 Mar 2023 18:35:57 +0100</pubDate>
</item>
<item>
    <title>mod_tokenauth: Support for creating sub-tokens</title>
    <link>http://hg.omfa.de/prosody-hg/log/0a56b84ec4ad/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[mod_tokenauth: Support for creating sub-tokens<br/>
<br/>
Properties of sub-tokens:<br/>
<br/>
- They share the same id as their parent token<br/>
- Sub-tokens may not have their own sub-tokens (but may have sibling tokens)<br/>
- They always have the same or shorter lifetime compared to their parent token<br/>
- Revoking a parent token revokes all sub-tokens<br/>
- Sub-tokens always have the same JID as the parent token<br/>
- They do not have their own 'accessed' property - accessing a sub-token<br/>
  updates the parent token's accessed time<br/>
<br/>
Although this is a generic API, it is designed to at least fill the needs of<br/>
OAuth2 refresh + access tokens (where the parent token is the refresh token<br/>
and the sub-tokens are access tokens).]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Sun, 26 Mar 2023 16:46:48 +0100</pubDate>
</item>
<item>
    <title>mod_tokenauth: return error if storage of new token fails</title>
    <link>http://hg.omfa.de/prosody-hg/log/e8716515405e/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[mod_tokenauth: return error if storage of new token fails]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Sun, 26 Mar 2023 15:53:27 +0100</pubDate>
</item>
<item>
    <title>mod_tokenauth: Track last access time (last time a token was used)</title>
    <link>http://hg.omfa.de/prosody-hg/log/6ebad8e16b3b/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[mod_tokenauth: Track last access time (last time a token was used)]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Fri, 24 Mar 2023 12:59:47 +0000</pubDate>
</item>
<item>
    <title>plugins: Prefix module imports with prosody namespace</title>
    <link>http://hg.omfa.de/prosody-hg/log/74b9e05af71e/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[plugins: Prefix module imports with prosody namespace]]></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, 24 Mar 2023 13:15:28 +0100</pubDate>
</item>
<item>
    <title>mod_tokenauth: Fix traceback in get_token_session()</title>
    <link>http://hg.omfa.de/prosody-hg/log/e331210beeb2/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[mod_tokenauth: Fix traceback in get_token_session()<br/>
<br/>
Errors in sha256 becasue `token_secret` is nil since it was not passed<br/>
to _get_validated_token_info().<br/>
<br/>
Looks like a simple oversight in ebe3b2f96cad]]></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, 21 Mar 2023 20:43:42 +0100</pubDate>
</item>
<item>
    <title>mod_tokenauth: Switch to new token format (invalidates existing tokens!)</title>
    <link>http://hg.omfa.de/prosody-hg/log/ebe3b2f96cad/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[mod_tokenauth: Switch to new token format (invalidates existing tokens!)<br/>
<br/>
The new format has the following properties:<br/>
<br/>
- 5 bytes longer than the previous format<br/>
- The token now has separate 'id' and 'secret' parts - the token itself is no<br/>
  longer stored in the DB, and the secret part is hashed<br/>
- The only variable length field (JID) has been moved to the end<br/>
- The 'secret-token:' prefix (RFC 8959) is now included<br/>
<br/>
Compatibility with the old token format was not maintained, and all previously<br/>
issued tokens are invalid after this commit (they will be removed from the DB<br/>
if used).]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Tue, 21 Mar 2023 14:33:29 +0000</pubDate>
</item>
<item>
    <title>mod_tokenauth: Log error when token validation fails</title>
    <link>http://hg.omfa.de/prosody-hg/log/a668bc1aa39d/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[mod_tokenauth: Log error when token validation fails]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Tue, 21 Mar 2023 14:04:39 +0000</pubDate>
</item>
<item>
    <title>util.sasl.oauthbearer: Return username from callback instead using authzid (BC)</title>
    <link>http://hg.omfa.de/prosody-hg/log/055b03d3059b/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[util.sasl.oauthbearer: Return username from callback instead using authzid (BC)<br/>
<br/>
RFC 6120 states that<br/>
&gt;  If the initiating entity does not wish to act on behalf of another<br/>
&gt;  entity, it MUST NOT provide an authorization identity.<br/>
<br/>
Thus it seems weird to require it here.  We can instead expect an<br/>
username from the token data passed back from the profile.<br/>
<br/>
This follows the practice of util.sasl.external where the profile<br/>
callback returns the selected username, making the authentication module<br/>
responsible for extracting the username from the token.]]></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, 16 Mar 2023 12:18:23 +0100</pubDate>
</item>
<item>
    <title>mod_tokenauth: Fix misplaced closing parenthesis</title>
    <link>http://hg.omfa.de/prosody-hg/log/7c0e5c7eff7c/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[mod_tokenauth: Fix misplaced closing parenthesis<br/>
<br/>
`type(x ~= y)` is always a string, thus truthy]]></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, 02 Mar 2023 22:34:29 +0100</pubDate>
</item>
<item>
    <title>mod_tokenauth: Gracefully handle missing tokens</title>
    <link>http://hg.omfa.de/prosody-hg/log/e4de42495fb7/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[mod_tokenauth: Gracefully handle missing tokens]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Wed, 01 Mar 2023 18:43:54 +0000</pubDate>
</item>
<item>
    <title>mod_tokenauth: Add SASL handler backend that can accept and verify tokens</title>
    <link>http://hg.omfa.de/prosody-hg/log/70f6a8dceb1d/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[mod_tokenauth: Add SASL handler backend that can accept and verify tokens<br/>
<br/>
This is designed for use by other modules that want to accept tokens issued<br/>
by mod_tokenauth, without duplicating all the necessary logic.]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Wed, 01 Mar 2023 13:04:36 +0000</pubDate>
</item>
<item>
    <title>mod_tokenauth: Add some sanity checking of the new optional parameters</title>
    <link>http://hg.omfa.de/prosody-hg/log/2b4661bd39e2/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[mod_tokenauth: Add some sanity checking of the new optional parameters]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Wed, 01 Mar 2023 13:02:51 +0000</pubDate>
</item>
<item>
    <title>mod_tokenauth: Add 'purpose' constraint</title>
    <link>http://hg.omfa.de/prosody-hg/log/012fa81d1f5d/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[mod_tokenauth: Add 'purpose' constraint<br/>
<br/>
This allows tokens to be tied to specific purposes/protocols. For example, we<br/>
shouldn't (without specific consideration) allow an OAuth token to be dropped<br/>
into a slot expecting a FAST token.<br/>
<br/>
While FAST doesn't currently use mod_tokenauth, it and others may do in the<br/>
future. It's better to be explicit about what kind of token code is issuing or<br/>
expecting.]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Wed, 01 Mar 2023 13:01:21 +0000</pubDate>
</item>
<item>
    <title>mod_tokenauth: Allow attaching an arbitrary data table to a token</title>
    <link>http://hg.omfa.de/prosody-hg/log/daa654dbd8de/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[mod_tokenauth: Allow attaching an arbitrary data table to a token]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Thu, 13 Oct 2022 22:46:19 +0100</pubDate>
</item>
<item>
    <title>mod_tokenauth: Remove expired tokens from storage</title>
    <link>http://hg.omfa.de/prosody-hg/log/19113f232423/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[mod_tokenauth: Remove expired tokens from storage]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Thu, 06 Oct 2022 16:00:39 +0100</pubDate>
</item>
<item>
    <title>mod_tokenauth: Invalidate tokens issued before most recent password change</title>
    <link>http://hg.omfa.de/prosody-hg/log/126aefd2c4c6/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[mod_tokenauth: Invalidate tokens issued before most recent password change<br/>
<br/>
This is a security improvement, to ensure that sessions authenticated using a<br/>
token (note: not currently possible in stock Prosody) are invalidated just<br/>
like password-authenticated sessions are.]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Thu, 06 Oct 2022 15:59:07 +0100</pubDate>
</item>
<item>
    <title>mod_authz_internal, and more: New iteration of role API</title>
    <link>http://hg.omfa.de/prosody-hg/log/07424992d7fc/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[mod_authz_internal, and more: New iteration of role API<br/>
<br/>
These changes to the API (hopefully the last) introduce a cleaner separation<br/>
between the user's primary (default) role, and their secondary (optional)<br/>
roles.<br/>
<br/>
To keep the code sane and reduce complexity, a data migration is needed for<br/>
people using stored roles in 0.12. This can be performed with<br/>
<br/>
  prosodyctl mod_authz_internal migrate &lt;host&gt;]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Wed, 17 Aug 2022 16:38:53 +0100</pubDate>
</item>
<item>
    <title>mod_tokenauth: New API that better fits how modules are using token auth</title>
    <link>http://hg.omfa.de/prosody-hg/log/86e1187f6274/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[mod_tokenauth: New API that better fits how modules are using token auth<br/>
<br/>
This also updates the module to the new role API, and improves support for<br/>
scope/role selection (currently treated as the same thing, which they almost<br/>
are).]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Wed, 20 Jul 2022 10:52:17 +0100</pubDate>
</item>
<item>
    <title>mod_tokenauth: Track creation time of tokens</title>
    <link>http://hg.omfa.de/prosody-hg/log/5efd6865486c/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[mod_tokenauth: Track creation time of tokens]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Fri, 28 Feb 2020 21:55:40 +0000</pubDate>
</item>
<item>
    <title>mod_tokenauth: Handle tokens issued to bare hosts (eg components)</title>
    <link>http://hg.omfa.de/prosody-hg/log/4459afac4d13/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[mod_tokenauth: Handle tokens issued to bare hosts (eg components)]]></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, 28 Feb 2020 14:13:04 +0100</pubDate>
</item>
<item>
    <title>mod_authtokens: Rename to mod_tokenauth for consistency with mod_saslauth</title>
    <link>http://hg.omfa.de/prosody-hg/log/bf81523e2ff4/plugins/mod_tokenauth.lua</link>
    <description><![CDATA[mod_authtokens: Rename to mod_tokenauth for consistency with mod_saslauth]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Wed, 26 Feb 2020 22:46:15 +0000</pubDate>
</item>

  </channel>
</rss>
