This repository has been archived on 2023-02-21. You can view files and clone it, but cannot push or open issues or pull requests.
pyoidc-ozwillo/oidc_example/rp3
Roland Hedberg 7e095f658b Fixed RP3 errors 2014-12-16 14:23:34 +01:00
..
certs Removed rp1, made rp/rp3 complete. 2014-04-24 14:07:42 +02:00
htdocs Fixed RP3 errors 2014-12-16 14:23:34 +01:00
static Refactored according to PEP8 and optimized imports 2014-11-07 14:49:22 +01:00
README Files that disappeared during the move. 2014-04-24 13:51:06 +02:00
conf.py.example Fixed RP3 errors 2014-12-16 14:23:34 +01:00
oidc.py Fixed RP3 errors 2014-12-16 14:23:34 +01:00
rp3.py Merge remote-tracking branch 'rohe/master' into ci_testing 2014-11-24 16:10:23 +01:00
start.sh Fixed so all examples have a start.sh script and that all are working. 2014-11-13 09:29:46 +01:00

README

A simple but fully functioning OpenID Connect Relying Party implementation.

Configuration
=============

This is the first thing you have to deal with. conf.py.example contains a
boilerplate for you to modify to your liking.

BASE and PORT should be obvious, it's where the RP resides.

SERVER_KEY, SERVER_CERT and CA_BUNDLE are used for TLS/SSL.

ME is information that is registered with the OP on dynamic client
registration. There are lots more values that you can register, a list can be
found in the standard
http://openid.net/specs/openid-connect-registration-1_0.html#ClientMetadata
redirect_uris is the only one that is required all the rest are optional.

BEHAVIOUR specifies parameters to the Authentication Request.
If response_types are omitted in ME (which it is in the example) then the
default is that the RP will only use the code response type.

CLIENTS is a list of known OPs with their behaviour and one entry for
uknown OPs. For unknown OPs it is assumed that discovery and registration can
be performed dynamically.
If everything is done dynamically then there are three stages that are performed:

1) Using webfinger to find the publisher of the Provider Information
2) Asking for the Provider Information
3) Registering the Client with the OP

For different reasons OPs can decide not to support one or more of these.
If they don't the the information has to be found in some out-of-band way
and entered into the configuration.

If (1) is not supported a srv_discovery_url has to be provided.
If (2) is not supported provider_info has to be provided.
If (3) is not supported client_registration has to be provided.

If (3) is supported you have to provide client_info which is the information
that is going to be registered with the OP. This allows you to register
different information with different OPs.