Annotate

mod_s2soutinjection/README.markdown @ 5193:2bb29ece216b

mod_http_oauth2: Implement stateless dynamic client registration Replaces previous explicit registration that required either the additional module mod_adhoc_oauth2_client or manually editing the database. That method was enough to have something to test with, but would not probably not scale easily. Dynamic client registration allows creating clients on the fly, which may be even easier in theory. In order to not allow basically unauthenticated writes to the database, we implement a stateless model here. per_host_key := HMAC(config -> oauth2_registration_key, hostname) client_id := JWT { client metadata } signed with per_host_key client_secret := HMAC(per_host_key, client_id) This should ensure everything we need to know is part of the client_id, allowing redirects etc to be validated, and the client_secret can be validated with only the client_id and the per_host_key. A nonce injected into the client_id JWT should ensure nobody can submit the same client metadata and retrieve the same client_secret
author Kim Alvefur <zash@zash.se>
date Fri, 03 Mar 2023 21:14:19 +0100
parent 4931:f4a9e804c457
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1999
e3e76e9693a1 mod_s2soutinjection: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
1 ---
e3e76e9693a1 mod_s2soutinjection: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
2 summary: S2S connection override
e3e76e9693a1 mod_s2soutinjection: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
3 ...
e3e76e9693a1 mod_s2soutinjection: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
4
e3e76e9693a1 mod_s2soutinjection: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
5 # Introduction
e3e76e9693a1 mod_s2soutinjection: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
6
e3e76e9693a1 mod_s2soutinjection: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
7 This module is similar to [mod\_srvinjection] but less of an hack.
e3e76e9693a1 mod_s2soutinjection: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
8
e3e76e9693a1 mod_s2soutinjection: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
9 # Configuration
e3e76e9693a1 mod_s2soutinjection: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
10
e3e76e9693a1 mod_s2soutinjection: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
11 ``` lua
e3e76e9693a1 mod_s2soutinjection: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
12 -- In the global section
e3e76e9693a1 mod_s2soutinjection: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
13
e3e76e9693a1 mod_s2soutinjection: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
14 modules_enabled = {
e3e76e9693a1 mod_s2soutinjection: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
15 --- your other modules
e3e76e9693a1 mod_s2soutinjection: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
16 "s2soutinjection";
e3e76e9693a1 mod_s2soutinjection: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
17 }
e3e76e9693a1 mod_s2soutinjection: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
18
4931
f4a9e804c457 mod_s2soutinjection: Rewrite based on mod_onions for 0.12 compat (thanks Zash)
moparisthebest <admin@moparisthebest.com>
parents: 1999
diff changeset
19 -- targets must be IPs, not hostnames
1999
e3e76e9693a1 mod_s2soutinjection: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
20 s2s_connect_overrides = {
e3e76e9693a1 mod_s2soutinjection: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
21 -- This one will use the default port, 5269
4931
f4a9e804c457 mod_s2soutinjection: Rewrite based on mod_onions for 0.12 compat (thanks Zash)
moparisthebest <admin@moparisthebest.com>
parents: 1999
diff changeset
22 ["example.com"] = "1.2.3.4";
1999
e3e76e9693a1 mod_s2soutinjection: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
23
e3e76e9693a1 mod_s2soutinjection: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
24 -- To set a different port:
4931
f4a9e804c457 mod_s2soutinjection: Rewrite based on mod_onions for 0.12 compat (thanks Zash)
moparisthebest <admin@moparisthebest.com>
parents: 1999
diff changeset
25 ["another.example"] = { "127.0.0.1", 9999 };
1999
e3e76e9693a1 mod_s2soutinjection: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
26 }
e3e76e9693a1 mod_s2soutinjection: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
27 ```
e3e76e9693a1 mod_s2soutinjection: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
28
e3e76e9693a1 mod_s2soutinjection: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
29 # Compatibility
e3e76e9693a1 mod_s2soutinjection: Add a README
Kim Alvefur <zash@zash.se>
parents:
diff changeset
30
4931
f4a9e804c457 mod_s2soutinjection: Rewrite based on mod_onions for 0.12 compat (thanks Zash)
moparisthebest <admin@moparisthebest.com>
parents: 1999
diff changeset
31 Requires 0.9.x or later. Tested on 0.12.0