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 Authentifizierung Attributes Autorisierung Franck Borel, AAR-Projekt, UB-Freiburg 3
Der Aufbau des Identity Providers Komponenten des Identity Provider Beantwortet Anfragen zu Benutzerrechten Identifiziert den Benutzer Authentication Authority Attribute Authority (AA) SSO Service (SSO) Artifact Resolution Service Wartet auf Benutzer-anmeldungen und leitet den Benutzer an die Authentication Authority weiter Beantwortet Anfragen die mit Browser/ Artifact gesendet wurden Franck Borel, AAR-Projekt, UB-Freiburg 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 (6) POST Client Authentication Authority Attribute Authority (AA) (7) 200 (4) 302 SSO Dienst Artifact Resolution Service (3) Get (8) 302 Assertion Consumer Service (7) 200 Attribute Requester (5) Get (6) POST (10) 200 (9) Get Access Control Target Resource (2) 302 (1) Get 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: 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 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 NotBefore="2004-12-05T09:17:02Z" NotOnOrAfter="2004-1205T09:27:02Z"> <saml:AudienceRestrictionCondition> <saml:Audience>http://sp.example.org/shibboleth</saml:Audience> </saml:AudienceRestrictionCondition> </saml:Conditions> <saml:AuthenticationStatement AuthenticationInstant="2004-12-05T09:22:00Z" AuthenticationMethod="urn:oasis:names:tc:SAML:1.0:am:password"> <saml:Subject> <saml:NameIdentifier Format="urn:mace:shibboleth:1.0:nameIdentifier" NameQualifier="https://aar.ub.uni-freiburg.de/shibboleth-idp13b"> 3f7b3dcf-1674-4ecd-92c8-1544f346baf8 </saml:NameIdentifier> <saml:SubjectConfirmation> <saml:ConfirmationMethod> urn:oasis:names:tc:SAML:1.0:cm:bearer </saml:ConfirmationMethod> </saml:SubjectConfirmation> </saml:Subject> </saml:AuthenticationStatement> </saml:Assertion> Zeitstempel Empfänger Authentifizierungs-methode Handle 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 NotBefore="2004-12-05T09:17:05Z„ NotOnOrAfter="2004-12-05T09:52:05Z"> <saml:AudienceRestrictionCondition> <saml:Audience>http://sp.example.org/shibboleth</saml:Audience> </saml:AudienceRestrictionCondition> </saml:Conditions> <saml:AttributeStatement> <saml:Subject> <saml:NameIdentifier Format="urn:mace:shibboleth:1.0:nameIdentifier„ NameQualifier="https://idp.example.org/shibboleth"> 3f7b3dcf-1674-4ecd-92c8-1544f346baf8 </saml:NameIdentifier> </saml:Subject> <saml:Attribute AttributeName="urn:mace:dir:attribute-def:eduPersonPrincipalName" AttributeNamespace="urn:mace:shibboleth:1.0:attributeNamespace:uri"> <saml:AttributeValue Scope="example.org">userid</saml:AttributeValue> </saml:Attribute> </saml:AttributeStatement> </saml:Assertion> Empfänger Handle Attribut Franck Borel, AAR-Projekt, UB-Freiburg 9
Die Übertragungsmethoden von Nachrichten Es kommen zwei verschiedene Übertragungsmethoden zum Einsatz: Browser/Post: Bestehend aus einer Anfrage mit GET und einer Antwort mit Browser/Post. 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 https://idp.example.org/shibboleth/SSO? target=https://sp.example.org/myresource& shire=https://sp.example.org/shibboleth/SSO& providerId=https://sp.example.org/shibboleth& time=1102260120 Client <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> (4)200 (3)Get <samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol" MajorVersion="1" MinorVersion="1" IssueInstant="2004-12-05T09:22:02Z" Recipient="https://sp.example.org/shibboleth/SSO/POST" ResponseID="c7055387-af61-4fce-8b98-e2927324b306"> <!—- ds:Signature Element --> <samlp:Status><samlp:StatusCode Value="samlp:Success"/> </samlp:Status><!-- SAML assertion Element --> </samlp:Response> SSO Service Authentication Authority Franck Borel, AAR-Projekt, UB-Freiburg 11
Die Übertragungsmethoden von Nachrichten Authentifizierung mit Browser/Artifact Client Authentication Authority Attribute Authority (4) 302 SSO Service Artifact Resolution Service (3) Get (8) 302 Assertion Consumer Service (7) 200 (6) POST (5) Get (10) 200 (9) Get Access Control Target Resource (2) 302 (1) Get Franck Borel, AAR-Projekt, UB-Freiburg 12
Die Übertragungsmethoden von Nachrichten Authentifizierung mit Browser/Artifact 1. Benutzeranfrage an den SSO https://idp.example.org/shibboleth/SSO? target=https://sp.example.org/myresource& shire=https://sp.example.org/shibboleth/SSO/Artifact &providerId=https://sp.example.org/shibboleth 2. Anfrage des Service Providers an den Identity Provider <?xml version="1.1" encoding="ISO-8859-1"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header/> <SOAP-ENV:Body> <samlp:Request xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol" MajorVersion="1" MinorVersion="1" RequestID="f81d4fae-7dec-11d0-a765-00a0c91e6bf6" IssueInstant="2004-12-05T09:22:04Z"> <samlp:AssertionArtifact> AAEwGDwd3Z7Fr1GPbM82Fk2CZbpNB1dxD+t2Prp+TDtqxVA78iMf3F23 </samlp:AssertionArtifact> </samlp:Request> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 3. Antwort des Identity Provider an den Service Provider <?xml version="1.1" encoding="ISO-8859-1"?> <SOAP-ENV:Envelope xmlns:SOAPENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header/> <SOAP-ENV:Body> <samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol" MajorVersion="1" MinorVersion="1" Recipient="https://sp.example.org/shibboleth/SSO/Artifact" ResponseID="00099cf1-a355-10f9-9e95-004005b13a2b" InResponseTo="f81d4fae-7dec-11d0-a765-00a0c91e6bf6" IssueInstant="2004-12-05T09:22:05Z"> <samlp:Status> <samlp:StatusCode Value="samlp:Success"/> </samlp:Status> <saml:Assertion …><!-- Daten zur Authentifizierung --></saml:Assertion> </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 Client Authentication Authority Attribute Authority (4) 302 SSO Service Artifact Resolution Service (3) Get (7) 200 (6) POST (6) POST (8) 302 Assertion Consumer Service (7) 200 (5) Get Attribute Requester (10) 200 (9) Get Access Control Target Resource (2) 302 (1) Get 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) <?xml version="1.1" encoding="ISO-8859-1"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header/> <SOAP-ENV:Body> <samlp:Request xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol" MajorVersion="1" MinorVersion="1" IssueInstant="2004-12-05T09:22:04Z" RequestID="aaf23196-1773-2113-474a-fe114412ab72"> <samlp:AttributeQuery Resource="https://sp.example.org/shibboleth"> <saml:Subject> <saml:NameIdentifier Format="urn:mace:shibboleth:1.0:nameIdentifier" NameQualifier="https://idp.example.org/shibboleth"> 3f7b3dcf-1674-4ecd-92c8-1544f346baf8</saml:NameIdentifier> </saml:Subject> <saml:AttributeDesignator AttributeName="urn:mace:dir:attribute-def:eduPersonPrincipalName" AttributeNamespace="urn:mace:shibboleth:1.0:attributeNamespace:uri"/> </samlp:AttributeQuery> </samlp:Request> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 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/"> <SOAP-ENV:Header/> <SOAP-ENV:Body> <samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol" InResponseTo="aaf23196-1773-2113-474a-fe114412ab72" IssueInstant="2004-12-05T09:22:05Z" MajorVersion="1" MinorVersion="1" ResponseID="b07b804c-7c29-ea16-7300-4f3d6f7928ac"> <samlp:Status> <samlp:StatusCode Value="samlp:Success"/> </samlp:Status> <saml:Assertion … <!– Attribute --> </saml:Assertion> </samlp:Response> </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? target=https://sp.example.org/myresource& SAMLart=AAEwGDwd3Z7FrGPbM82Fk2CZbpNB7YuJ8k%2BvmCjh9Y4Wsq6H5%2BKU4C SAMLart=AAEwGDwd3Z7Fr1GPbM82Fk2CZbpNB8tb%2By6Yoo40XGfl4QfLKq9xZ8UW 2. Anfrage an die Attribute Authority (AA) <?xml version="1.1" encoding="ISO-8859-1"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header/> <SOAP-ENV:Body> <samlp:Request xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol" MajorVersion="1" MinorVersion="1" RequestID="f81d4fae-7dec-11d0-a765-00a0c91e6bf6" IssueInstant="2004-12-05T09:22:04Z"> <samlp:AssertionArtifact> AAEwGDwd3Z7Fr1GPbM82Fk2CZbpNB7YuJ8gk+vmCjh9Y4Wsq6H5+KU4C </samlp:AssertionArtifact> AAEwGDwd3Z7Fr1GPbM82Fk2CZbpNB8tb+y6YOO40XGfl4QfLKq9xZ8UW </samlp:Request> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 3. 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/"> <SOAP-ENV:Header/> <SOAP-ENV:Body> <samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol" MajorVersion="1" MinorVersion="1" Recipient="https://sp.example.org/shibboleth/SSO/Artifact" ResponseID="00099cf1-a355-10f9-9e95-004005b13a2b" InResponseTo="f81d4fae-7dec-11d0-a765-00a0c91e6bf6" IssueInstant="2004-12-05T09:22:05Z"> <samlp:Status><samlp:StatusCode Value="samlp:Success"/></samlp:Status> <saml:Assertion><!-- Daten zur Authentifikation --></saml:Assertion> <saml:Assertion><!-- Attribute --></saml:Assertion> </samlp:Response> </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
Weitere Eigenschaften zur Einheit Metadaten Beispiel für Metadaten des Identity Providers <EntitiesDescriptor…> <!– Extension.shibmeta:KeyAuthority --> <EntityDescriptor entityID=https://idp.example.org/shib> <!-- IDPSSODescriptor Element --> <!-- AttributeAuthorityDescriptor Element --> <Organization> <OrganizationName xml:lang="de"> Shibboleth Identity Provider </OrganizationName> <OrganizationDisplayName xml:lang="de"> Shibboleth Identity Provider @ Some Location </OrganizationDisplayName> <OrganizationURL xml:lang="de"> http://aar.ub.uni-freiburg.de/ </OrganizationURL> </Organization> <ContactPerson contactType="technical"> <SurName>Shibboleth IdP Support</md:SurName> <EmailAddress>borel@ub.uni-freiburg.de</md:EmailAddress> </ContactPerson> </EntityDescriptor> </EntitiesDescriptor> Zertifikate Teilnehmende Einheiten (vier Typen): <IDPSSODescriptor> → SSO Dienst (IdP) <SPSSODescriptor> → Assertion Consumer Service (SP) <AuthnAuthoritDescriptor> → Authentication Authority (IdP) <AttributeAuthorityDescriptor> → Attribute Authority (IdP) Weitere Eigenschaften zur Einheit Franck Borel, AAR-Projekt, UB-Freiburg 20
Verwendete Übertragungsmethode Metadaten Beispiel für Metadaten des Identity Provider: SSO Dienst <IDPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:1.1:protocol urn:mace:shibboleth:1.0"> <KeyDescriptor use="signing"> <ds:KeyInfo> <ds:KeyName>IdP SSO Key</ds:KeyName> </ds:KeyInfo> </KeyDescriptor> <md:ArtifactResolutionService isDefault="true" index="0" Binding="urn:oasis:names:tc:SAML:1.0:bindings:SOAP-binding" Location="https://idp.example.org/shibboleth/Artifact"/> <NameIDFormat> urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress </NameIDFormat> urn:mace:shibboleth:1.0:nameIdentifier <SingleSignOnService Binding="urn:mace:shibboleth:1.0:profiles:AuthnRequest" Location="https://idp.example.org/shibboleth/SSO"/> </IDPSSODescriptor> Typ der Einheit Verwendete Übertragungsmethode Standort Franck Borel, AAR-Projekt, UB-Freiburg 21
Typ der teilnehmenden Einheit Metadaten Beispiel für Metadaten des Identity Provider: Attribute Authority <AttributeAuthorityDescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:1.1:protocol"> <AttributeService Binding="urn:oasis:names:tc:SAML:1.0:bindings:SOAP-binding" Location="https://shib.ub.uni-freiburg.de:8443/shibboleth/AA/"/> <NameIDFormat> urn:mace:shibboleth:1.0:nameIdentifier</NameIDFormat> </AttributeAuthorityDescriptor> Typ der teilnehmenden Einheit Standort Franck Borel, AAR-Projekt, UB-Freiburg 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