|
| 1 | +******************** |
| 2 | +The clients database |
| 3 | +******************** |
| 4 | + |
| 5 | +Information kept about clients in the client database are to begin with the |
| 6 | +client metadata as defined in |
| 7 | +https://openid.net/specs/openid-connect-registration-1_0.html . |
| 8 | + |
| 9 | +To that we have the following additions specified in OIDC extensions. |
| 10 | + |
| 11 | +* https://openid.net/specs/openid-connect-rpinitiated-1_0.html |
| 12 | + + post_logout_redirect_uri |
| 13 | +* https://openid.net/specs/openid-connect-frontchannel-1_0.html |
| 14 | + + frontchannel_logout_uri |
| 15 | + + frontchannel_logout_session_required |
| 16 | +* https://openid.net/specs/openid-connect-backchannel-1_0.html#Backchannel |
| 17 | + + backchannel_logout_uri |
| 18 | + + backchannel_logout_session_required |
| 19 | +* https://openid.net/specs/openid-connect-federation-1_0.html#rfc.section.3.1 |
| 20 | + + client_registration_types |
| 21 | + + organization_name |
| 22 | + + signed_jwks_uri |
| 23 | + |
| 24 | +And finally we add a number of parameters that are OidcOP specific. |
| 25 | +These are described in this document. |
| 26 | + |
| 27 | +-------------- |
| 28 | +allowed_scopes |
| 29 | +-------------- |
| 30 | + |
| 31 | +Which scopes that can be returned to a client. This is used to filter |
| 32 | +the set of scopes a user can authorize release of. |
| 33 | + |
| 34 | +----------------- |
| 35 | +token_usage_rules |
| 36 | +----------------- |
| 37 | + |
| 38 | +There are usage rules for tokens. Rules are set per token type (the basic set is |
| 39 | +authorization_code, refresh_token, access_token and id_token). |
| 40 | +The possible rules are: |
| 41 | + |
| 42 | ++ how many times they can be used |
| 43 | ++ if other tokens can be minted based on this token |
| 44 | ++ how fast they expire |
| 45 | + |
| 46 | +A typical example (this is the default) would be:: |
| 47 | + |
| 48 | + "token_usage_rules": { |
| 49 | + "authorization_code": { |
| 50 | + "max_usage": 1 |
| 51 | + "supports_minting": ["access_token", "refresh_token"], |
| 52 | + "expires_in": 600, |
| 53 | + }, |
| 54 | + "refresh_token": { |
| 55 | + "supports_minting": ["access_token"], |
| 56 | + "expires_in": -1 |
| 57 | + }, |
| 58 | + } |
| 59 | + |
| 60 | +This then means that access_tokens can be used any number of times, |
| 61 | +can not be used to mint other tokens and will expire after 300 seconds |
| 62 | +which is the default for any token. An authorization_code can only used once |
| 63 | +and it can be used to mint access_tokens and refresh_tokens. Note that normally |
| 64 | +an authorization_code is used to mint an access_token and a refresh_token at |
| 65 | +the same time. Such a dual minting is counted as one usage. |
| 66 | +And lastly an refresh_token can be used to mint access_tokens any number of |
| 67 | +times. An *expires_in* of -1 means that the token will never expire. |
| 68 | + |
| 69 | +If token_usage_rules are defined in the client metadata then it will be used |
| 70 | +whenever a token is minted unless circumstances makes the OP modify the rules. |
| 71 | + |
| 72 | +Also this does not mean that what is valid for a token can not be changed |
| 73 | +during run time. |
| 74 | + |
| 75 | + |
0 commit comments