- Create a private RSA key (with openssl:
openssl genrsa -out private.pem <keylen>
) - Create a public and private JWK from the RSA key:
oidc-fed/src/services/utils/rsa_key_to_jwk.py <hostname> private.pem
- Issue new software statements with the private JWK using
oidc-fed/src/services/fo/fo.py
:oidc-fed/src/services/fo/fo.py <entity_data>.json <hostname>.jwk
Make sure to give the public JWK, <hostname>.pub.jwk
, together with the
software statement to any new parties joining the federation.
- Get a software statement and public JWK from all federations that the IdP
should be part of. Make sure it includes the correct URL as
issuer
. - Create a private RSA key (with openssl:
openssl genrsa -out private.pem <keylen>
) - Convert it to a JWK with
oidc-fed/src/services/utils/rsa_key_to_jwk.py <hostname> private.pem
The SATOSA proxy can be used to integrate an existing SAML IdP into a OpenID Connect federation.
- Configure the SATOSA proxy, see the installation instructions first:
- For the frontend, acting as an OP, copy
oidc-fed/src/oidc_fed/satosa/oidc-fed_frontend.yaml.example
1. Add the private JWK (<hostname>.jwk
) created withrsa_key_to_jwk.py
under the keyroot_key_jwk
. 1. Add all software statements under the keysoftware_statements
. 1. Add all federation keys under the keyfederations_jwk
- For the backend, acting as a SAML SP towards your IdP, see the instructions.
- Use the provider implementation bundled with the project
(
oidc-fed/src/services/op/op.py
):- Install the library and the dependencies:
pip install . -r oidc-fed/src/services/requirements.txt
- Copy the example files:
cp oidc-fed/src/services/op/app_config.py.example oidc-fed/src/services/op/app_config.py cp oidc-fed/src/services/op/config.yaml.example oidc-fed/src/services/op/config.yaml
- Get a key and certificate for SSL/TLS (or create a self-signed certificate).
- Configure the provider in
oidc-fed/src/services/op/config.yaml
:- Add the private JWK (
<hostname>.jwk
) created withrsa_key_to_jwk.py
under the keyroot_key_jwk
. - Add all software statements under the key
software_statements
. - Add all federation JWK's under the key
federations_jwk
- Add the private JWK (
- Configure the web app in
oidc-fed/src/services/op/app_config.py
:- Specify the path to the YAML file created in the above step in
PROVIDER_CONFIG
. - Specify the
SERVER_NAME
. Make sure that the host name (and optional port) matches the one in the issuer URL in the software statement(s). - Specify the SSL/TLS key and cert in
HTTPS_KEY
andHTTPS_CERT
respectively.
- Specify the path to the YAML file created in the above step in
- Run the provider:
OIDCFED_PROVIDER_CONFIG=<path to app_config.py.example> oidc-fed/src/services/op/op.py
- Get a software statement and public JWK from all federations that the RP
should be part of. Make sure it contains the correct
redirect_uris
. - Create a private RSA key (with openssl:
openssl genrsa -out private.pem <keylen>
) - Convert it to a JWK with
oidc-fed/src/services/utils/rsa_key_to_jwk.py <hostname> private.pem
- Use the relying party implementation bundled with the project
(
oidc-fed/src/services/rp/rp.py
):- Install the library and the dependencies:
pip install . -r oidc-fed/src/services/requirements.txt
- Copy the example files:
cp oidc-fed/src/services/rp/app_config.py.example oidc-fed/src/services/rp/app_config.py cp oidc-fed/src/services/rp/config.yaml.example oidc-fed/src/services/rp/config.yaml
- Get a key and certificate for SSL/TLS (or create a self-signed certificate).
- Configure the relying party in
oidc-fed/src/services/rp/config.yaml
:- Add the private JWK (
<hostname>.jwk
) created withrsa_key_to_jwk.py
under the keyroot_key_jwk
. - Add all software statements under the key
software_statements
. - Add all federation JWK's under the key
federations_jwk
- Add the private JWK (
- Configure the web app in
oidc-fed/src/services/rp/app_config.py
:- Specify the path to the YAML file created in the above step in
PROVIDER_CONFIG
. - Specify the
SERVER_NAME
. Make sure that the software statement(s) includeshttps://<server_name>/finish
as aredirect_uri
. - Specify the SSL/TLS key and cert in
HTTPS_KEY
andHTTPS_CERT
respectively.
- Specify the path to the YAML file created in the above step in
- Run the relying party
OIDCFED_RELYING_PARTY_CONFIG=<path to app_config.py.example> oidc-fed/src/services/rp/rp.py
- Coming soon...