Skip to content
This repository was archived by the owner on Jun 23, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
8dcff31
Doing DPoP.
rohe May 20, 2021
1d0df40
Doing DPoP.
rohe May 20, 2021
1b575f9
Doing DPoP.
rohe May 20, 2021
e8b73dc
And finally
rohe May 20, 2021
2332e27
And finally ... working tests.
rohe May 20, 2021
2f7960e
Removed device_authorization.py .
rohe May 20, 2021
652a13d
fix: Session dump inconsistent schema after sman flush
peppelinux May 21, 2021
71b324e
fix: session manager gets password from general config
peppelinux May 21, 2021
1d72522
fix: session manager salt optionally from global conf
peppelinux May 21, 2021
990ada2
some improvements but salt being overwritten runtime with a "" value …
peppelinux May 21, 2021
31975d8
fix: sman has finally made peace with pointers and primary memory is …
peppelinux May 21, 2021
cb28f0e
chore: sman db unit tests, private _key and _salt are readonly values
peppelinux May 22, 2021
ba808dc
fix: .gitignore improved - now salts created by unittests are ignored
peppelinux May 22, 2021
a1b5483
Merge branch 'develop' into sman_flush
peppelinux May 22, 2021
302d17c
chore: Documentation
peppelinux May 22, 2021
b91eb9b
chore: django_op example definitively moved to django-oidc-op github…
peppelinux May 22, 2021
828b075
fix: removed unused imports
peppelinux May 22, 2021
8239376
fix: removed cryptojwt warning
peppelinux May 22, 2021
4286cc8
fix: Added flask_op introspection endpoint in views.py
peppelinux May 23, 2021
3fa0078
chore: Documentation usage examples about consuming Introspection end…
peppelinux May 23, 2021
be43d45
Added token endpoint to oidc-op/oauth2.
rohe May 23, 2021
7a5b8c2
Merge branch 'dpop2' into develop2
peppelinux May 23, 2021
35c8653
Merge branch 'sman_flush' into develop2
peppelinux May 23, 2021
39fa4e8
Merge branch 'token' into develop2
peppelinux May 23, 2021
4bdc503
Refactored configuration.
rohe May 24, 2021
73c198d
Merge branch 'token' of https://github.com/identitypython/oidc-op int…
peppelinux May 24, 2021
ac79c67
fix: flask_op example config missing comma
peppelinux May 24, 2021
66ad918
Fixed bug
rohe May 24, 2021
d3bfbf0
Added dpop_enabled to endpoint_context.
rohe May 24, 2021
c95a7b3
chore: token handlers description in Documentation
peppelinux May 24, 2021
dc92af0
chore_ pick_auth refactor
peppelinux May 24, 2021
5c6d678
chore: Documentation about login_hint2acr and html templates
peppelinux May 24, 2021
524e4e9
fix: acr value in documentation and examples
peppelinux May 24, 2021
c69fbfc
fix: pick_auth exception
peppelinux May 24, 2021
08c572c
Merge pull request #66 from IdentityPython/pick_auth
May 25, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -115,3 +115,5 @@ venv.bak/
src/oidcendpoint.egg-info/

.iframes/
tests/pairwise.salt
tests/public.salt
65 changes: 0 additions & 65 deletions backburner/device_authorization.py

This file was deleted.

152 changes: 133 additions & 19 deletions doc/source/contents/conf.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,38 @@ issuer

The issuer ID of the OP, a unique value in URI format.

----
seed
----

Used in dynamic client registration endpoint when creating a new client_secret.
If unset it will be random.

--------
password
--------

Encryption key used to encrypt the SessionID (sid) in access_token.
If unset it will be random.

----
salt
----

Salt, value or filename, used in sub_funcs (pairwise, public) for creating the opaque hash of *sub* claim.

-----------
session_key
-----------

An example::

"session_key": {
"filename": "private/session_jwk.json",
"type": "OCT",
"use": "sig"
},

------
add_on
------
Expand Down Expand Up @@ -47,7 +79,7 @@ An example::

"authentication": {
"user": {
"acr": "oidcop.user_authn.authn_context.INTERNETPROTOCOLPASSWORD",
"acr": "urn:oasis:names:tc:SAML:2.0:ac:classes:InternetProtocolPassword",
"class": "oidcop.user_authn.user.UserPassJinja2",
"kwargs": {
"verify_endpoint": "verify/user",
Expand Down Expand Up @@ -195,8 +227,11 @@ An example::
"class": "oidcop.oauth2.introspection.Introspection",
"kwargs": {
"client_authn_method": [
"client_secret_post"
],
"client_secret_post",
"client_secret_basic",
"client_secret_jwt",
"private_key_jwt"
]
"release": [
"username"
]
Expand Down Expand Up @@ -266,6 +301,15 @@ An example::
}
}

You can specify which algoritms are supported, for example in userinfo_endpoint::

"userinfo_signing_alg_values_supported": OIDC_SIGN_ALGS,
"userinfo_encryption_alg_values_supported": OIDC_ENC_ALGS,

Or in authorization endpoint::

"request_object_encryption_alg_values_supported": OIDC_ENC_ALGS,

------------
httpc_params
------------
Expand Down Expand Up @@ -307,23 +351,40 @@ An example::
"uri_path": "static/jwks.json"
},

*read_only* means that on each restart the keys will created and overwritten with new ones.
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*.

---------------
login_hint2acrs
---------------

OIDC Login hint support, it's optional.
It matches the login_hint paramenter to one or more Authentication Contexts.

An example::

"login_hint2acrs": {
"class": "oidcop.login_hint.LoginHint2Acrs",
"kwargs": {
"scheme_map": {
"email": [
"oidcop.user_authn.authn_context.INTERNETPROTOCOLPASSWORD"
"urn:oasis:names:tc:SAML:2.0:ac:classes:InternetProtocolPassword"
]
}
}
},

oidc-op supports the following authn contexts:

- UNSPECIFIED, urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified
- INTERNETPROTOCOLPASSWORD, urn:oasis:names:tc:SAML:2.0:ac:classes:InternetProtocolPassword
- MOBILETWOFACTORCONTRACT, urn:oasis:names:tc:SAML:2.0:ac:classes:MobileTwoFactorContract
- PASSWORDPROTECTEDTRANSPORT, urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
- PASSWORD, urn:oasis:names:tc:SAML:2.0:ac:classes:Password
- TLSCLIENT, urn:oasis:names:tc:SAML:2.0:ac:classes:TLSClient
- TIMESYNCTOKEN, urn:oasis:names:tc:SAML:2.0:ac:classes:TimeSyncToken


-----
authz
-----
Expand Down Expand Up @@ -358,31 +419,46 @@ An example::
}
},


-----------
session_key
-----------

An example::

"session_key": {
"filename": "private/session_jwk.json",
"type": "OCT",
"use": "sig"
},

------------
template_dir
------------

The HTML Template directory used by Jinja2, used by endpoint context
template loader, as::

Environment(loader=FileSystemLoader(template_dir), autoescape=True)

An example::

"template_dir": "templates"

For any further customization of template here an example of what used in django-oidc-op

"authentication": {
"user": {
"acr": "urn:oasis:names:tc:SAML:2.0:ac:classes:InternetProtocolPassword",
"class": "oidc_provider.users.UserPassDjango",
"kwargs": {
"verify_endpoint": "verify/oidc_user_login/",
"template": "oidc_login.html",

"page_header": "Testing log in",
"submit_btn": "Get me in!",
"user_label": "Nickname",
"passwd_label": "Secret sauce"
}
}
},

------------------
token_handler_args
------------------

Token handler is an intermediate interface used by and endpoint to manage
the tokens' default behaviour, like lifetime and minting policies.
With it we can create a token that's linked to another, and keep relations between many tokens
in session and grants management.

An example::

"token_handler_args": {
Expand Down Expand Up @@ -442,6 +518,44 @@ An example::
}
}

jwks_defs can be replaced eventually by `jwks_file`::

"jwks_file": f"{OIDC_JWKS_PRIVATE_PATH}/token_jwks.json",

You can even select wich algorithms to support in id_token, eg::

"id_token": {
"class": "oidcop.token.id_token.IDToken",
"kwargs": {
"id_token_signing_alg_values_supported": [
"RS256",
"RS512",
"ES256",
"ES512",
"PS256",
"PS512",
],
"id_token_encryption_alg_values_supported": [
"RSA-OAEP",
"RSA-OAEP-256",
"A192KW",
"A256KW",
"ECDH-ES",
"ECDH-ES+A128KW",
"ECDH-ES+A192KW",
"ECDH-ES+A256KW",
],
"id_token_encryption_enc_values_supported": [
'A128CBC-HS256',
'A192CBC-HS384',
'A256CBC-HS512',
'A128GCM',
'A192GCM',
'A256GCM'
],
}
}

--------
userinfo
--------
Expand All @@ -456,8 +570,8 @@ An example::
}

This is somethig that can be customized.
For example in a django project we would use something like
the following (see `example/django_op/oidc_provider`)::
For example in the django-oidc-op implementation is used something like
the following::

"userinfo": {
"class": "oidc_provider.users.UserInfo",
Expand Down
Loading