Einfhrung in den Identity Provider Eine technische bersicht
Einführung in den Identity Provider Eine technische Übersicht Shibboleth Workshop Freiburg, 12. 10. 2005 Franck Borel, AAR-Projekt, UB Freiburg
Übersicht • Die Aufgaben des Identity Providers • Der Aufbau des Identity Providers • Die Übertragungsmethoden von Nachrichten: Grundlagen und Konzept – Kleiner Exkurs in Shibboleth-SAML – Browser/Post und Browser/Artifact • Metadaten Franck Borel, AAR-Projekt, UB-Freiburg 2
Die Aufgaben des Identity Provider An identity provider maintains user credentials and attributes (T. Scavo & S. Cantor, 2005). – User credentials – Attributes Franck Borel, AAR-Projekt, UB-Freiburg Authentifizierung Autorisierung 3
Der Aufbau des Identity Providers • Komponenten des Identity Provider Identifiziert den Benutzer Wartet auf Benutzeranmeldungen und leitet den Benutzer an die Authentication Authority weiter Authentication Authority SSO Service (SSO) Franck Borel, AAR-Projekt, UB-Freiburg Attribute Authority (AA) Artifact Resolution Service Beantwortet Anfragen zu Benutzerrechten Beantwortet Anfragen die mit Browser/ Artifact gesendet wurden 4
Die Übertragungsmethoden von Nachrichten • Die Übertragung von Nachrichten erfolgt mit Hilfe von: – SAML – Browser/Post – Browser/Artifact Franck Borel, AAR-Projekt, UB-Freiburg 5
Die Übertragungsmethoden von Nachrichten Übertragung von Nachrichten – Übersicht ohne WAYF Identity Provider Authentication Authority Attribute Authority (AA) SSO Dienst Artifact Resolution Service (7) 200 (4) 302 (3) Get Client (8) 302 (5) Get Access Control (10) 200 (9) Get (2) 302 (1) Get Assertion Consumer Service (6) POST (7) 200 (6) POST Attribute Requester Target Resource Service Provider Franck Borel, AAR-Projekt, UB-Freiburg 6
Die Übertragungsmethoden von Nachrichten Kleiner Exkurs in Shibboleth-SAML Eigenschaften: • Können digital signiert werden • Werden in fünf verschiedenen Varianten verwendet: a. b. c. d. Bestätigung einer erfolgreichen Authentifizierung Fehlerrückmeldung Attributantwort Autorisierungsnachricht anhand derer der Service Provider entscheiden kann, ob ein Benutzer auf eine Ressource zugreifen darf oder nicht e. Zusammengesetzter Typ aus a und c (Browser/Artifact) Franck Borel, AAR-Projekt, UB-Freiburg 7
Die Übertragungsmethoden von Nachrichten Kleiner Exkurs in SAML Beispiel für eine Authentifizierungsbestätigung (SSO Bestätigung) <saml: Assertion. . . > <saml: Conditions Not. Before="2004 -12 -05 T 09: 17: 02 Z" Not. On. Or. After=" 2004 -1205 T 09: 27: 02 Z"> <saml: Audience. Restriction. Condition > <saml: Audience>http: //sp. example. org/shibboleth</saml: Audience> </saml: Audience. Restriction. Condition > Zeitstempel </saml: Conditions> <saml: Authentication. Statement Authentication. Instant="2004 -12 -05 T 09: 22: 00 Z" Authentication. Method="urn: oasis: names: tc: SAML: 1. 0: am: password"> <saml: Subject> Empfänger <saml: Name. Identifier Format="urn: mace: shibboleth: 1. 0: name. Identifier" Name. Qualifier="https: //aar. ub. uni-freiburg. de/shibboleth-idp 13 b"> 3 f 7 b 3 dcf-1674 -4 ecd-92 c 8 -1544 f 346 baf 8 </saml: Name. Identifier> <saml: Subject. Confirmation > <saml: Confirmation. Method> urn: oasis: names: tc: SAML: 1. 0: cm: bearer </saml: Confirmation. Method> Authentifizierungs</saml: Subject. Confirmation > </saml: Subject> methode Handle </saml: Authentication. Statement > </saml: Assertion> Franck Borel, AAR-Projekt, UB-Freiburg 8
Die Übertragungsmethoden von Nachrichten Kleiner Exkurs in SAML Beispiel für eine SAML-Nachricht mit Benutzerrechten (Attribute) <saml: Assertion …> <saml: Conditions Not. Before="2004 -12 -05 T 09: 17: 05 Z„ Not. On. Or. After="2004 -12 -05 T 09: 52: 05 Z"> <saml: Audience. Restriction. Condition > <saml: Audience>http: //sp. example. org/shibboleth</saml: Audience> </saml: Audience. Restriction. Condition > </saml: Conditions> <saml: Attribute. Statement> Empfänger <saml: Subject> <saml: Name. Identifier Format="urn: mace: shibboleth: 1. 0: name. Identifier„ Name. Qualifier="https: //idp. example. org/shibboleth"> 3 f 7 b 3 dcf-1674 -4 ecd-92 c 8 -1544 f 346 baf 8 Handle </saml: Name. Identifier> </saml: Subject> <saml: Attribute. Name="urn: mace: dir: attribute-def: edu. Person. Principal. Name " Attribute. Namespace="urn: mace: shibboleth: 1. 0: attribute. Namespace: uri"> <saml: Attribute. Value Scope="example. org">userid</saml: Attribute. Value> </saml: Attribute. Statement> </saml: Assertion> Attribut Franck Borel, AAR-Projekt, UB-Freiburg 9
Die Übertragungsmethoden von Nachrichten • Es kommen zwei verschiedene Übertragungsmethoden zum Einsatz: a. Browser/Post: Bestehend aus einer Anfrage mit GET und einer Antwort mit Browser/Post. b. Browser/Artifact: Bestehend aus einer Anfrage mit GET und einer Antwort mit Browser/Artifact. Franck Borel, AAR-Projekt, UB-Freiburg 10
Die Übertragungsmethoden von Nachrichten Authentifizierung mit Browser/Post <form method="post" action="https: //sp. example. org/shibboleth/SSO/POST". . . > <input name="TARGET" type="hidden" value="https: //sp. example. org/myresource" /> <input name="SAMLResponse" value="response" type="hidden" />. . . <input type="submit" value="Submit"></form> Client (4)200 https: //idp. example. org/shibboleth/SSO? target=https: //sp. example. org/myresource& shire=https: //sp. example. org/shibboleth/SSO& provider. Id=https: //sp. example. org/shibboleth& time=1102260120 (3)Get SSO Service Authentication Authority <samlp: Response xmlns: samlp="urn: oasis: names: tc: SAML: 1. 0: protocol" Major. Version="1" Minor. Version="1" Issue. Instant="2004 -12 -05 T 09: 22: 02 Z" Recipient="https: //sp. example. org/shibboleth/SSO/POST" Response. ID="c 7055387 -af 61 -4 fce-8 b 98 -e 2927324 b 306"> <!—- ds: Signature Element --> <samlp: Status><samlp: Status. Code Value="samlp: Success"/> </samlp: Status><!-- SAML assertion Element --> </samlp: Response> Franck Borel, AAR-Projekt, UB-Freiburg 11
Die Übertragungsmethoden von Nachrichten Authentifizierung mit Browser/Artifact Authentication Authority Attribute Authority SSO Service Artifact Resolution Service (4) 302 (3) Get Client (8) 302 (5) Get Franck Borel, AAR-Projekt, UB-Freiburg Access Control (10) 200 (9) Get (2) 302 (1) Get Assertion Consumer Service (7) 200 (6) POST Target Resource 12
Die Übertragungsmethoden von Nachrichten Authentifizierung mit Browser/Artifact 1. Benutzeranfrage an den SSO https: //idp. example. org/shibboleth/SSO? 2. Anfrage des Service Providers an den Identity Provider target=https: //sp. example. org/myresource& <? xml version="1. 1" encoding="ISO-8859 -1"? > shire=https: //sp. example. org/shibboleth/SSO/Artifact <SOAP-ENV: Envelope &provider. Id=https: //sp. example. org/shibboleth xmlns: SOAP-ENV="http: //schemas. xmlsoap. org/soap/envelope/"> <? xml version="1. 1" encoding="ISO-8859 -1"? > <SOAP-ENV: Header/> <SOAP-ENV: Envelope xmlns: SOAPENV="http: //schemas. xmlsoap. org/soap/envelope/"> <SOAP-ENV: Body> <SOAP-ENV: Header/> <samlp: Request <SOAP-ENV: Body> xmlns: samlp="urn: oasis: names: tc: SAML: 1. 0: protocol" <samlp: Response xmlns: samlp="urn: oasis: names: tc: SAML: 1. 0: protocol" Major. Version="1" Minor. Version="1" Request. ID="f 81 d 4 fae-7 dec-11 d 0 -a 765 -00 a 0 c 91 e 6 bf 6 " Recipient=" https: //sp. example. org/shibboleth/SSO/Artifact " Issue. Instant="2004 -12 -05 T 09: 22: 04 Z"> Response. ID="00099 cf 1 -a 355 -10 f 9 -9 e 95 -004005 b 13 a 2 b " <samlp: Assertion. Artifact> In. Response. To="f 81 d 4 fae-7 dec-11 d 0 -a 765 -00 a 0 c 91 e 6 bf 6" AAEw. GDwd 3 Z 7 Fr 1 GPb. M 82 Fk 2 CZbp. NB 1 dx. D+t 2 Prp+TDtqx. VA 78 i. Mf 3 F 23 Issue. Instant="2004 -12 -05 T 09: 22: 05 Z"> </samlp: Assertion. Artifact> <samlp: Status> </samlp: Request> <samlp: Status. Code Value="samlp: Success"/> </SOAP-ENV: Body> </samlp: Status> </SOAP-ENV: Envelope> <saml: Assertion …><!-- Daten zur Authentifizierung --> </saml: Assertion> 3. Antwort des Identity Provider an den Service Provider </samlp: Response> </SOAP-ENV: Body> </SOAP-ENV: Envelope> Franck Borel, AAR-Projekt, UB-Freiburg 13
Die Übertragungsmethoden von Nachrichten Übertragung der Attribute: • Die Übertragung erfolgt in zwei Schritten: – – • Anfrage vom Service Provider mit einer SAML-Nachricht (Browser/Post oder Browser/Artifact) Antwort vom Identity Provider mit einer SAML-Nachricht (Browser/Post oder Browser/Artifact) Der Austausch von Attributen ist optional. Der Service Provider kann aufgrund der Authentifizierung Ressourcen für einen Benutzer freigeben. In der Praxis wird der Service Provider im Normalfall mehr Informationen zum Benutzer benötigen. Franck Borel, AAR-Projekt, UB-Freiburg 14
Die Übertragungsmethoden von Nachrichten Übertragung von Attributen Identity Provider Browser/Artifact Authentication Authority Attribute Authority SSO Service Artifact Resolution Service (4) 302 (3) Get Client (8) 302 (5) Get Access Control (10) 200 (9) Get (2) 302 (1) Get Assertion Consumer Service (7) 200 (6) POST Attribute Requester Target Resource. Browser/Post Service Provider Franck Borel, AAR-Projekt, UB-Freiburg 15
Die Übertragungsmethoden von Nachrichten Attributanfrage mit Browser/Post 1. Anfrage an die Attribute Authority (AA) 2. Antwort mit Attributen an den Service Provider <? xml version="1. 1" encoding="ISO-8859 -1"? > <SOAP-ENV: Envelope xmlns: SOAP-ENV="http: //schemas. xmlsoap. org/soap/envelope/"> <? xml version="1. 1" encoding="ISO-8859 -1"? > <SOAP-ENV: Header/> <SOAP-ENV: Envelope <SOAP-ENV: Body> xmlns: SOAP-ENV="http: //schemas. xmlsoap. org/soap/envelope/"> <samlp: Request xmlns: saml=" urn: oasis: names: tc: SAML: 1. 0: assertion " <SOAP-ENV: Header/> xmlns: samlp="urn: oasis: names: tc: SAML: 1. 0: protocol" <SOAP-ENV: Body> Major. Version="1" Minor. Version="1" <samlp: Response xmlns: samlp="urn: oasis: names: tc: SAML: 1. 0: protocol" Issue. Instant="2004 -12 -05 T 09: 22: 04 Z" In. Response. To="aaf 23196 -1773 -2113 -474 a-fe 114412 ab 72" Request. ID="aaf 23196 -1773 -2113 -474 a-fe 114412 ab 72"> Issue. Instant="2004 -12 -05 T 09: 22: 05 Z" <samlp: Attribute. Query Resource="https: //sp. example. org/shibboleth"> Major. Version="1" Minor. Version="1" <saml: Subject> Response. ID="b 07 b 804 c-7 c 29 -ea 16 -7300 -4 f 3 d 6 f 7928 ac"> <saml: Name. Identifier Format="urn: mace: shibboleth: 1. 0: name. Identifier" <samlp: Status> Name. Qualifier="https: //idp. example. org/shibboleth"> <samlp: Status. Code Value="samlp: Success"/> 3 f 7 b 3 dcf-1674 -4 ecd-92 c 8 -1544 f 346 baf 8</saml: Name. Identifier> </samlp: Status> </saml: Subject> <saml: Assertion … <saml: Attribute. Designator <!– Attribute --> Attribute. Name="urn: mace: dir: attribute-def: edu. Person. Principal. Name" </saml: Assertion> Attribute. Namespace="urn: mace: shibboleth: 1. 0: attribute. Namespace: uri"/> </samlp: Response> </samlp: Attribute. Query> </SOAP-ENV: Body> </samlp: Request> </SOAP-ENV: Envelope> </SOAP-ENV: Body> </SOAP-ENV: Envelope> Franck Borel, AAR-Projekt, UB-Freiburg 16
Die Übertragungsmethoden von Nachrichten Attributanfrage mit Browser/Artifact 1. Anfrage an den SSO-Dienst https: //idp. example. org/shibboleth/SSO ? 2. Anfrage an die Attribute Authority (AA) target=https: //sp. example. org/myresource& 3. Antwort mit Attributen an den Service Provider SAMLart=AAEw. GDwd 3 Z 7 Fr. GPb. M 82 Fk 2 CZbp. NB 7 Yu. J 8 k%2 Bvm. Cjh 9 Y 4 Wsq 6 H 5%2 BKU 4 C <? xml version="1. 1" encoding="ISO-8859 -1"? > SAMLart=AAEw. GDwd 3 Z 7 Fr 1 GPb. M 82 Fk 2 CZbp. NB 8 tb%2 By 6 Yoo 40 XGfl 4 Qf. LKq 9 x. Z 8 UW <SOAP-ENV: Envelope xmlns: SOAP-ENV="http: //schemas. xmlsoap. org/soap/envelope/"> <SOAP-ENV: Header/> <SOAP-ENV: Body> <samlp: Response xmlns: samlp="urn: oasis: names: tc: SAML: 1. 0: protocol" <samlp: Request Major. Version="1" Minor. Version="1" xmlns: samlp="urn: oasis: names: tc: SAML: 1. 0: protocol" Recipient="https: //sp. example. org/shibboleth/SSO/Artifact" Major. Version="1" Minor. Version="1" Response. ID="00099 cf 1 -a 355 -10 f 9 -9 e 95 -004005 b 13 a 2 b " Request. ID="f 81 d 4 fae-7 dec-11 d 0 -a 765 -00 a 0 c 91 e 6 bf 6 " In. Response. To="f 81 d 4 fae-7 dec-11 d 0 -a 765 -00 a 0 c 91 e 6 bf 6" Issue. Instant="2004 -12 -05 T 09: 22: 04 Z"> Issue. Instant="2004 -12 -05 T 09: 22: 05 Z"> <samlp: Assertion. Artifact> <samlp: Status><samlp: Status. Code Value="samlp: Success"/></samlp: Status> AAEw. GDwd 3 Z 7 Fr 1 GPb. M 82 Fk 2 CZbp. NB 7 Yu. J 8 gk+vm. Cjh 9 Y 4 Wsq 6 H 5+KU 4 C <saml: Assertion><!-- Daten zur Authentifikation --></ saml: Assertion> </samlp: Assertion. Artifact> <saml: Assertion><!-- Attribute --></saml: Assertion> <samlp: Assertion. Artifact> </samlp: Response> AAEw. GDwd 3 Z 7 Fr 1 GPb. M 82 Fk 2 CZbp. NB 8 tb+y 6 YOO 40 XGfl 4 Qf. LKq 9 x. Z 8 UW </SOAP-ENV: Body> </samlp: Assertion. Artifact> </SOAP-ENV: Envelope> </samlp: Request> </SOAP-ENV: Body> </SOAP-ENV: Envelope> Franck Borel, AAR-Projekt, UB-Freiburg 17
Metadaten • Wozu Metadaten? – Um die Kommunikation zwischen Identity Provider und Service Provider zu erleichtern – Sicherheit • In den Metadaten sind Identity Provider und Service Provider aufgeführt, die zu einer Föderation gehören • Nur in dem Metadaten aufgeführte Zertifikate werden akzeptiert Franck Borel, AAR-Projekt, UB-Freiburg 18
Metadaten Aufbau der Metadaten: • Akzeptierte und verwendete Zertifikate • Auflistung der teilnehmenden Einheiten Franck Borel, AAR-Projekt, UB-Freiburg 19
Metadaten • Beispiel für Metadaten des Identity Providers <Entities. Descriptor…> Zertifikate <!– Extension. shibmeta: Key. Authority --> <Entity. Descriptor entity. ID= https: //idp. example. org/shib> <!-- IDPSSODescriptor Element --> Teilnehmende Einheiten (vier <!-- Attribute. Authority. Descriptor Element --> <Organization> Typen): <Organization. Name xml: lang="de"> • <IDPSSODescriptor> → SSO Shibboleth Identity Provider Dienst (Id. P) </Organization. Name> <Organization. Display. Name xml: lang="de"> • <SPSSODescriptor> → Assertion Shibboleth Identity Provider @ Some Location Consumer Service (SP) </Organization. Display. Name> • <Authn. Authorit. Descriptor> → <Organization. URL xml: lang="de"> http: //aar. ub. uni-freiburg. de/ Authentication Authority (Id. P) </Organization. URL> • <Attribute. Authority. Descriptor> → </Organization> Attribute Authority (Id. P) <Contact. Person contact. Type="technical"> <Sur. Name>Shibboleth Id. P Support</md: Sur. Name> <Email. Address>borel@ub. uni-freiburg. de</md: Email. Address> </Contact. Person> </Entity. Descriptor> Weitere Eigenschaften </Entities. Descriptor> zur Einheit Franck Borel, AAR-Projekt, UB-Freiburg 20
Metadaten Beispiel für Metadaten des Identity Provider: SSO Dienst <IDPSSODescriptor protocol. Support. Enumeration="urn: oasis: names: tc: SAML: 1. 1: protocol urn: mace: shibboleth: 1. 0"> <Key. Descriptor use="signing"> <ds: Key. Info> <ds: Key. Name>Id. P SSO Key</ds: Key. Name> Typ der </ds: Key. Info> Einheit </Key. Descriptor> <md: Artifact. Resolution. Service is. Default="true" index="0" Binding="urn: oasis: names: tc: SAML: 1. 0: bindings: SOAP-binding" Location="https: //idp. example. org/shibboleth/Artifact"/> <Name. IDFormat> urn: oasis: names: tc: SAML: 1. 1: nameid-format: email. Address Verwendete </Name. IDFormat> Übertragungsmethode <Name. IDFormat> urn: mace: shibboleth: 1. 0: name. Identifier </Name. IDFormat> <Single. Sign. On. Service Standort Binding="urn: mace: shibboleth: 1. 0: profiles: Authn. Request" Location="https: //idp. example. org/shibboleth/SSO "/> </IDPSSODescriptor> Franck Borel, AAR-Projekt, UB-Freiburg 21
Metadaten Beispiel für Metadaten des Identity Provider: Attribute Authority <Attribute. Authority. Descriptor protocol. Support. Enumeration="urn: oasis: names: tc: SAML: 1. 1: protocol"> <Attribute. Service Binding="urn: oasis: names: tc: SAML: 1. 0: bindings: SOAP-binding" Location=" https: //shib. uni-freiburg. de: 8443/shibboleth/AA/ "/> <Name. IDFormat> urn: mace: shibboleth: 1. 0: name. Identifier</Name. IDFormat> </Attribute. Authority. Descriptor> Typ der teilnehmenden Einheit Franck Borel, AAR-Projekt, UB-Freiburg Standort 22
Danke für Ihre Aufmerksamkeit! Seien Sie gespannt auf… Identity Provider II, die Rückkehr Heute Nachmittag in diesem Raum Franck Borel, AAR-Projekt, UB-Freiburg 23
- Slides: 23