Skip to content

Commit 68fc62f

Browse files
authored
Merge pull request #1 from IdentityPython/master
merge from master
2 parents 04907b4 + 49da5d4 commit 68fc62f

File tree

5 files changed

+536
-16
lines changed

5 files changed

+536
-16
lines changed

doc/README.md

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -208,29 +208,36 @@ The SAML2 frontend act as a SAML Identity Provider (IdP), accepting
208208
authentication requests from SAML Service Providers (SP). The default
209209
configuration file can be found [here](../example/plugins/frontends/saml2_frontend.yaml.example).
210210

211-
The SAML2 frontend comes in two different flavors:
211+
The SAML2 frontend comes in three different flavors:
212212

213-
The **SAMLMirrorFrontend** module mirrors each target provider as a separate entity in the SAML metadata.
214-
In this proxy this is handled with dynamic entity id's, encoding the target provider.
215-
This allows external discovery services to present the mirrored providers transparently, as separate entities
216-
in its UI. The following flow diagram shows the communcation:
217-
218-
`SP -> optional discovery service -> selected proxy SAML entity -> target IdP`
219-
220-
221-
The **SAMLFrontend** module acts like a single IdP, and hides all target providers. This enables the proxy to support
213+
1. The **SAMLFrontend** module acts like a single IdP, and hides all target providers. This enables the proxy to support
222214
SP's which only support communication with a single IdP, while the proxy will seamlessly communicate with multiple
223215
target providers. The metadata for the published IdP will contain one *Single Sign On Location* for each target
224216
provider.
225217

226-
The following flow diagram shows the communication:
218+
The following flow diagram shows the communication:
227219

228-
`SP -> proxy SAML SSO location -> target IdP`
220+
`SP -> proxy SAML SSO location -> target IdP`
229221

230-
For the simple case where an SP does not support discovery it's also possible to delegate the discovery to the
222+
For the simple case where an SP does not support discovery it's also possible to delegate the discovery to the
231223
`SAMLBackend` (see below), which would enable the following communication flow:
232224

233-
`SP -> SAMLFrontend -> SAMLBackend -> discovery to select target IdP -> target IdP`
225+
`SP -> SAMLFrontend -> SAMLBackend -> discovery to select target IdP -> target IdP`
226+
227+
2. The **SAMLMirrorFrontend** module mirrors each target provider as a separate entity in the SAML metadata.
228+
In this proxy this is handled with dynamic entity id's, encoding the target provider.
229+
This allows external discovery services to present the mirrored providers transparently, as separate entities
230+
in its UI. The following flow diagram shows the communcation:
231+
232+
`SP -> optional discovery service -> selected proxy SAML entity -> target IdP`
233+
234+
3. The **SAMLVirtualCoFrontend** module enables multiple IdP frontends, each with its own distinct
235+
entityID and SSO endpoints, and each representing a distinct collaborative organization or CO.
236+
An example configuration can be found [here](../example/plugins/frontends/saml2_virtualcofrontend.yaml.example).
237+
238+
The following flow diagram shows the communication:
239+
240+
`SP -> Virtual CO SAMLFrontend -> SAMLBackend -> optional discovery service -> target IdP`
234241

235242

236243
##### Custom attribute release
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
module: satosa.frontends.saml2.SAMLVirtualCoFrontend
2+
name: Saml2IDP
3+
config:
4+
collaborative_organizations:
5+
# The encodeable name for the CO will be URL encoded and used
6+
# both for the entityID and the SSO endpoints of the virtual IdP.
7+
# The entityID has the form
8+
#
9+
# {base_entity_id}/{co_name}
10+
#
11+
# The endpoint URLs have the form
12+
#
13+
# {base}/{backend}/{co_name}/{path}
14+
#
15+
- encodedable_name: MESS
16+
# If organization and contact_person details appear they
17+
# will override the same from the base configuration in
18+
# the generated metadata for the CO IdP.
19+
organization:
20+
display_name: MESS
21+
name: Medium Energy Synchrotron Source
22+
url: https://messproject.org
23+
contact_person:
24+
- contact_type: technical
25+
email_address: [email protected]
26+
given_name MESS Technical Support
27+
- encodeable_name: MTS
28+
organization:
29+
display_name: Milwaukee Theological Seminary
30+
name: Milwaukee Theological Seminary
31+
url: https://milwaukeetheologicalseminary.org
32+
- encodeable_name: IBNS Staff
33+
idp_config:
34+
organization: {display_name: Example Identities, name: Example Identities Org., url: 'http://www.example.com'}
35+
contact_person:
36+
- {contact_type: technical, email_address: [email protected], given_name: Technical}
37+
- {contact_type: support, email_address: [email protected], given_name: Support}
38+
key_file: frontend.key
39+
cert_file: frontend.crt
40+
metadata:
41+
local: [sp.xml]
42+
43+
entityid: <base_url>/<name>/proxy.xml
44+
accepted_time_diff: 60
45+
service:
46+
idp:
47+
endpoints:
48+
single_sign_on_service: []
49+
name: Proxy IdP
50+
ui_info:
51+
display_name:
52+
- lang: en
53+
text: "IdP Display Name"
54+
description:
55+
- lang: en
56+
text: "IdP Description"
57+
information_url:
58+
- lang: en
59+
text: "http://idp.information.url/"
60+
privacy_statement_url:
61+
- lang: en
62+
text: "http://idp.privacy.url/"
63+
keywords:
64+
- lang: se
65+
text: ["Satosa", "IdP-SE"]
66+
- lang: en
67+
text: ["Satosa", "IdP-EN"]
68+
logo:
69+
text: "http://idp.logo.url/"
70+
width: "100"
71+
height: "100"
72+
name_id_format: ['urn:oasis:names:tc:SAML:2.0:nameid-format:persistent', 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient']
73+
policy:
74+
default:
75+
attribute_restrictions: null
76+
fail_on_missing_requested: false
77+
lifetime: {minutes: 15}
78+
name_form: urn:oasis:names:tc:SAML:2.0:attrname-format:uri
79+
acr_mapping:
80+
"": default-LoA
81+
"https://accounts.google.com": LoA1
82+
83+
endpoints:
84+
single_sign_on_service:
85+
'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST': sso/post
86+
'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect': sso/redirect
87+
88+
# If configured and not false or empty the common domain cookie _saml_idp will be set
89+
# with or have appended the IdP used for authentication. The default is not to set the
90+
# cookie. If the value is a dictionary with key 'domain' then the domain for the cookie
91+
# will be set to the value for the 'domain' key. If no 'domain' is set then the domain
92+
# from the BASE defined for the proxy will be used.
93+
common_domain_cookie:
94+
domain: .example.com

0 commit comments

Comments
 (0)