88
99The issuer ID of the OP, a unique value in URI format.
1010
11+ ----
12+ seed
13+ ----
14+
15+ Used in dynamic client registration endpoint when creating a new client_secret.
16+ If unset it will be random.
17+
18+ --------
19+ password
20+ --------
21+
22+ Encryption key used to encrypt the SessionID (sid) in access_token.
23+ If unset it will be random.
24+
25+ ----
26+ salt
27+ ----
28+
29+ Salt, value or filename, used in sub_funcs (pairwise, public) for creating the opaque hash of *sub * claim.
30+
31+ -----------
32+ session_key
33+ -----------
34+
35+ An example::
36+
37+ "session_key": {
38+ "filename": "private/session_jwk.json",
39+ "type": "OCT",
40+ "use": "sig"
41+ },
42+
1143------
1244add_on
1345------
@@ -47,7 +79,7 @@ An example::
4779
4880 "authentication": {
4981 "user": {
50- "acr": "oidcop.user_authn.authn_context.INTERNETPROTOCOLPASSWORD ",
82+ "acr": "urn:oasis:names:tc:SAML:2.0:ac:classes:InternetProtocolPassword ",
5183 "class": "oidcop.user_authn.user.UserPassJinja2",
5284 "kwargs": {
5385 "verify_endpoint": "verify/user",
@@ -195,8 +227,11 @@ An example::
195227 "class": "oidcop.oauth2.introspection.Introspection",
196228 "kwargs": {
197229 "client_authn_method": [
198- "client_secret_post"
199- ],
230+ "client_secret_post",
231+ "client_secret_basic",
232+ "client_secret_jwt",
233+ "private_key_jwt"
234+ ]
200235 "release": [
201236 "username"
202237 ]
@@ -266,6 +301,15 @@ An example::
266301 }
267302 }
268303
304+ You can specify which algoritms are supported, for example in userinfo_endpoint::
305+
306+ "userinfo_signing_alg_values_supported": OIDC_SIGN_ALGS,
307+ "userinfo_encryption_alg_values_supported": OIDC_ENC_ALGS,
308+
309+ Or in authorization endpoint::
310+
311+ "request_object_encryption_alg_values_supported": OIDC_ENC_ALGS,
312+
269313------------
270314httpc_params
271315------------
@@ -307,23 +351,40 @@ An example::
307351 "uri_path": "static/jwks.json"
308352 },
309353
354+ *read_only * means that on each restart the keys will created and overwritten with new ones.
355+ This can be useful during the first time the project have been executed, then to keep them as they are *read_only * would be configured to *True *.
356+
310357---------------
311358login_hint2acrs
312359---------------
313360
361+ OIDC Login hint support, it's optional.
362+ It matches the login_hint paramenter to one or more Authentication Contexts.
363+
314364An example::
315365
316366 "login_hint2acrs": {
317367 "class": "oidcop.login_hint.LoginHint2Acrs",
318368 "kwargs": {
319369 "scheme_map": {
320370 "email": [
321- "oidcop.user_authn.authn_context.INTERNETPROTOCOLPASSWORD "
371+ "urn:oasis:names:tc:SAML:2.0:ac:classes:InternetProtocolPassword "
322372 ]
323373 }
324374 }
325375 },
326376
377+ oidc-op supports the following authn contexts:
378+
379+ - UNSPECIFIED, urn:oasis: names:tc: SAML:2.0:ac: classes:unspecified
380+ - INTERNETPROTOCOLPASSWORD, urn:oasis: names:tc: SAML:2.0:ac: classes:InternetProtocolPassword
381+ - MOBILETWOFACTORCONTRACT, urn:oasis: names:tc: SAML:2.0:ac: classes:MobileTwoFactorContract
382+ - PASSWORDPROTECTEDTRANSPORT, urn:oasis: names:tc: SAML:2.0:ac: classes:PasswordProtectedTransport
383+ - PASSWORD, urn:oasis: names:tc: SAML:2.0:ac: classes:Password
384+ - TLSCLIENT, urn:oasis: names:tc: SAML:2.0:ac: classes:TLSClient
385+ - TIMESYNCTOKEN, urn:oasis: names:tc: SAML:2.0:ac: classes:TimeSyncToken
386+
387+
327388-----
328389authz
329390-----
@@ -358,31 +419,46 @@ An example::
358419 }
359420 },
360421
361-
362- -----------
363- session_key
364- -----------
365-
366- An example::
367-
368- "session_key": {
369- "filename": "private/session_jwk.json",
370- "type": "OCT",
371- "use": "sig"
372- },
373-
374422------------
375423template_dir
376424------------
377425
426+ The HTML Template directory used by Jinja2, used by endpoint context
427+ template loader, as::
428+
429+ Environment(loader=FileSystemLoader(template_dir), autoescape=True)
430+
378431An example::
379432
380433 "template_dir": "templates"
381434
435+ For any further customization of template here an example of what used in django-oidc-op
436+
437+ "authentication": {
438+ "user": {
439+ "acr": "urn:oasis: names:tc: SAML:2.0:ac: classes:InternetProtocolPassword",
440+ "class": "oidc_provider.users.UserPassDjango",
441+ "kwargs": {
442+ "verify_endpoint": "verify/oidc_user_login/",
443+ "template": "oidc_login.html",
444+
445+ "page_header": "Testing log in",
446+ "submit_btn": "Get me in!",
447+ "user_label": "Nickname",
448+ "passwd_label": "Secret sauce"
449+ }
450+ }
451+ },
452+
382453------------------
383454token_handler_args
384455------------------
385456
457+ Token handler is an intermediate interface used by and endpoint to manage
458+ the tokens' default behaviour, like lifetime and minting policies.
459+ With it we can create a token that's linked to another, and keep relations between many tokens
460+ in session and grants management.
461+
386462An example::
387463
388464 "token_handler_args": {
@@ -442,6 +518,44 @@ An example::
442518 }
443519 }
444520
521+ jwks_defs can be replaced eventually by `jwks_file `::
522+
523+ "jwks_file": f"{OIDC_JWKS_PRIVATE_PATH}/token_jwks.json",
524+
525+ You can even select wich algorithms to support in id_token, eg::
526+
527+ "id_token": {
528+ "class": "oidcop.token.id_token.IDToken",
529+ "kwargs": {
530+ "id_token_signing_alg_values_supported": [
531+ "RS256",
532+ "RS512",
533+ "ES256",
534+ "ES512",
535+ "PS256",
536+ "PS512",
537+ ],
538+ "id_token_encryption_alg_values_supported": [
539+ "RSA-OAEP",
540+ "RSA-OAEP-256",
541+ "A192KW",
542+ "A256KW",
543+ "ECDH-ES",
544+ "ECDH-ES+A128KW",
545+ "ECDH-ES+A192KW",
546+ "ECDH-ES+A256KW",
547+ ],
548+ "id_token_encryption_enc_values_supported": [
549+ 'A128CBC-HS256',
550+ 'A192CBC-HS384',
551+ 'A256CBC-HS512',
552+ 'A128GCM',
553+ 'A192GCM',
554+ 'A256GCM'
555+ ],
556+ }
557+ }
558+
445559--------
446560userinfo
447561--------
@@ -456,8 +570,8 @@ An example::
456570 }
457571
458572This is somethig that can be customized.
459- For example in a django project we would use something like
460- the following (see ` example/django_op/oidc_provider `) ::
573+ For example in the django-oidc-op implementation is used something like
574+ the following::
461575
462576 "userinfo": {
463577 "class": "oidc_provider.users.UserInfo",
0 commit comments