Upload
rudi-heltemes
View
103
Download
0
Embed Size (px)
Citation preview
Einführung in den Identity ProviderEine technische Übersicht
Shibboleth Workshop Freiburg, 12.10.2005
Franck Borel, AAR-Projekt, UB Freiburg
Franck Borel, AAR-Projekt, UB-Freiburg 2
Ü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 3
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 4
Der Aufbau des Identity Providers
• Komponenten des Identity Provider
Authentication Authority
Attribute Authority (AA)
SSO Service (SSO)
Artifact Resolution
Service
Identifiziert den Benutzer
Wartet auf Benutzer-anmeldungen und leitet den Benutzer an die Authentication Authority weiter
Beantwortet Anfragen zu Benutzerrechten
Beantwortet Anfragen die mit Browser/Artifact gesendet wurden
Franck Borel, AAR-Projekt, UB-Freiburg 5
Die Übertragungsmethoden von Nachrichten
• Die Übertragung von Nachrichten erfolgt mit Hilfe von:
– SAML– Browser/Post– Browser/Artifact
Franck Borel, AAR-Projekt, UB-Freiburg 6
Die Übertragungsmethoden von Nachrichten
Client
Authentication Authority
Attribute Authority (AA)
SSO DienstArtifact
Resolution Service
Assertion Consumer
Service
Target Resource
Access
Contro
l
Identity Provider
Service Provider
(4) 302
(3) Get
(8) 302
(5) Get
(10) 200(9) Get(2) 302(1) Get
(6) POST
(7) 200
(7) 200
(6) POST
Übertragung von Nachrichten – Übersicht ohne WAYF
Attribute Requester
Franck Borel, AAR-Projekt, UB-Freiburg 7
Die Übertragungsmethoden von Nachrichten
Kleiner Exkurs in Shibboleth-SAMLEigenschaften:• Können digital signiert werden• Werden in fünf verschiedenen Varianten verwendet:
a. Bestätigung einer erfolgreichen Authentifizierungb. Fehlerrückmeldungc. Attributantwortd. 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 8
Die Übertragungsmethoden von Nachrichten
Kleiner Exkurs in SAMLBeispiel 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
Authentifizierungs-methodeHandle
Empfänger
Franck Borel, AAR-Projekt, UB-Freiburg 9
Die Übertragungsmethoden von Nachrichten
Kleiner Exkurs in SAMLBeispiel 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>
Attribut
Handle
Empfänger
Franck Borel, AAR-Projekt, UB-Freiburg 10
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 11
Die Übertragungsmethoden von Nachrichten
Authentifizierung mit Browser/Post
Client
SSO Service
Authentication Authority
(4)200 (3)Get
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
<samlp:Responsexmlns: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>
<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>
Franck Borel, AAR-Projekt, UB-Freiburg 12
Die Übertragungsmethoden von Nachrichten
Authentifizierung mit Browser/Artifact
Client
Authentication Authority
Attribute Authority
SSO ServiceArtifact
Resolution Service
Assertion Consumer
Service
Target Resource
Access
Contro
l
(4) 302
(3) Get
(8) 302
(5) Get
(10) 200(9) Get(2) 302(1) Get
(6) POST(7) 200
Franck Borel, AAR-Projekt, UB-Freiburg 13
1. Benutzeranfrage an den SSOhttps://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
Die Übertragungsmethoden von Nachrichten
Authentifizierung mit Browser/Artifact
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 14
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 15
Die Übertragungsmethoden von Nachrichten
Identity Provider
Client
Authentication Authority
Attribute Authority
SSO ServiceArtifact
Resolution Service
Assertion Consumer
Service
Target Resource
Access
Contro
l
Service Provider
(4) 302
(3) Get
(8) 302
(5) Get
(10) 200(9) Get(2) 302(1) Get
(6) POST(7) 200
(7) 200 (6) POST
Browser/Artifact
Browser/Post
Übertragung von Attributen
Attribute Requester
Franck Borel, AAR-Projekt, UB-Freiburg 16
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 17
1. Anfrage an den SSO-Diensthttps://idp.example.org/shibboleth/SSO? target=https://sp.example.org/myresource& SAMLart=AAEwGDwd3Z7FrGPbM82Fk2CZbpNB7YuJ8k%2BvmCjh9Y4Wsq6H5%2BKU4C SAMLart=AAEwGDwd3Z7Fr1GPbM82Fk2CZbpNB8tb%2By6Yoo40XGfl4QfLKq9xZ8UW
Die Übertragungsmethoden von Nachrichten
Attributanfrage mit Browser/Artifact
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> <samlp:AssertionArtifact> AAEwGDwd3Z7Fr1GPbM82Fk2CZbpNB8tb+y6YOO40XGfl4QfLKq9xZ8UW </samlp:AssertionArtifact> </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 18
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 19
Metadaten
Aufbau der Metadaten:
• Akzeptierte und verwendete Zertifikate
• Auflistung der teilnehmenden Einheiten
Franck Borel, AAR-Projekt, UB-Freiburg 20
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>[email protected]</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 21
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> <NameIDFormat> urn:mace:shibboleth:1.0:nameIdentifier </NameIDFormat> <SingleSignOnService Binding="urn:mace:shibboleth:1.0:profiles:AuthnRequest" Location="https://idp.example.org/shibboleth/SSO"/></IDPSSODescriptor>
Standort
Verwendete Übertragungsmethode
Typ der Einheit
Franck Borel, AAR-Projekt, UB-Freiburg 22
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 23
Danke für Ihre Aufmerksamkeit!
Seien Sie gespannt auf…
Identity Provider II, die Rückkehr
Heute Nachmittag in diesem Raum