Einführung in den Identity Provider Eine technische Übersicht Shibboleth Workshop Freiburg,...

Preview:

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>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 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

Recommended