2016-03-08 4 views
5

ich irgendwie verstehen, wie grundlegende SAML-Authentifizierung funktionieren soll:SAML Anfrage Attribute In AuthnRequest

Benutzeranfrage Ressource bei SP
SP sendet Auth Anfrage an IDP
IDP Benutzer authentifiziert und sendet einige userId
SP Sends für weitere Details mit userId Abfrage IDP Attribut
IDP zurück sendet Attribute
SP gibt Ressource Benutzer

Mein Problem ist, können Sie jede mögliche Weise Bypass-Attribut eQuery. Wenn ich eine SAML 2.0-Anfrage an meinen Gluu/Shibboleth-Server mache, bekomme ich givenName (Vorname) und sn (Nachname) zurück. Gibt es sowieso ich kann inum Benutzer-ID und E-Mail nur in der AuthnRequest anfordern?

Mein Wunsch ist ziemlich einfach:

<samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" ID="MyPrefix1457456412304" Version="2.0" IssueInstant="2016-03-08T17:00:12Z" ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"> 
    <saml:Issuer>me.com</saml:Issuer> 
</samlp:AuthnRequest> 

Anfrage ich zurück bin so etwas wie diese:

<?xml version="1.0" encoding="UTF-8"?> 
<saml2:Assertion xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion" ID="_bff09cf745ea5722aac3f3ec57c0ecf3" IssueInstant="2016-03-08T17:01:06.140Z" Version="2.0"> 
    <saml2:Issuer .... 
    <saml2:AttributeStatement> 
     <saml2:Attribute FriendlyName="sn" Name="urn:oid:2.5.4.4" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"> 
      <saml2:AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">User</saml2:AttributeValue> 
     </saml2:Attribute> 
     <saml2:Attribute FriendlyName="givenName" Name="urn:oid:2.5.4.42" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"> 
      <saml2:AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">Admin</saml2:AttributeValue> 
     </saml2:Attribute> 
    </saml2:AttributeStatement> 
</saml2:Assertion> 

ich den relevanten Teil der Spezifikation zu lesen, und es scheint, den Server zu sagen kann wirklich zurückgeben, was es will (und wie viele Attribute es will)? Meine Frage ist wieder, ob ich den SAML Gluu/Shibboleth-Server zwingen kann, mir bestimmte Attribute als Teil von AuthnRequest zurückzugeben.

Antwort

2

Sie müssen die gewünschten Attribute zu den freigegebenen Attributen in Ihrer Vertrauensbeziehung auf dem IdP hinzufügen. Afaik gibt es keine Möglichkeit, Attribute spezifisch anzufragen.

+0

Ich hasse dich ..... – jn1kk

+0

@Mike git gut. – jn1kk

3

Nur um ein bisschen mehr Details zu geben, die Zeit für Sie, zusätzliche Attribute als SP anfragen, wenn Sie Ihre Metadaten an die IdP senden. Diese Metadaten beschreiben Ihren Dienst, den ACS-Endpunkt, das öffentliche Zertifikat, mit dem Ihre AuthnRequests signiert werden, das Zertifikat, mit dem Ihr Partner verschlüsselt werden soll, die benötigten Attribute, Ihre eindeutige Entitäts-ID usw. Das Schöne Sobald Sie feststellen, was Ihr Service benötigt, müssen sich diese Metadaten nicht ändern - für ALLE Partner. Sie können es an alle senden, mit denen Sie zusammenarbeiten.

Sobald Ihre Partner diese Metadaten erhalten, importieren sie diese und erfüllen die angeforderten Attribute mit Informationen aus ihrem Identitätsrepository, konfigurieren die Signierung und Verschlüsselung usw. Sobald alles fertig ist, senden sie ihre Metadaten an Sie ihre Protokollendpunkte (an die Sie AuthnRequests senden müssen, usw.), das Zertifikat, das ihre Signaturen validieren kann, Validierung der Attribute, die sie an Sie senden (diese können sich ändern, basierend auf Konversationen, die Sie mit Ihren halten sollten Partner) usw.

Sie erhalten diese Metadaten und importieren sie in Ihr System und bauen die Verbindung (en) zu Ihren Anwendungen nach Bedarf aus.