2016-03-08 13 views
5

I tipi di capire come base l'autenticazione SAML dovrebbe funzionare: risorsa richiestaSAML Richiesta attributi in AuthnRequest

utente a SP
SP invia la richiesta di autenticazione per IDP
IDP autentica dell'utente e invia indietro alcuni userId
SP mandate attribuire query per IDP per ulteriori dettagli con userId
IDP rimanda attributi
SP dà utente risorsa

Il mio problema è, si può qualsiasi Attribut modo bypass equery. Quando faccio una richiesta SAML 2.0 al mio server di test Gluu/Shibboleth, torno givenName (firstname) e sn (lastname). È possibile richiedere l'ID utente e l'e-mail inum solo in AuthnRequest?

La mia richiesta è abbastanza semplice:

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

Richiesta torno è qualcosa di simile:

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

Ho letto la parte rilevante della specifica, e sembra dire il server può restituire ciò che vuole veramente (e quanti attributi vuole)? Ancora una volta, la mia domanda è se posso forzare il server SAML Gluu/Shibboleth a restituirmi attributi specifici come parte di AuthnRequest.

risposta

2

È necessario aggiungere gli attributi ricercati agli attributi rilasciati nella relazione di trust sull'IdP. Afaik non c'è modo di richiedere specificatamente attributi.

+0

Ti odio ..... – jn1kk

+0

@Mike va bene. – jn1kk

3

Solo per fornire un po 'più di dettaglio, il tempo per voi di richiedere ulteriori attributi come l'SP è quando si inviano i metadati all'IdP. I metadati descrivono il tuo servizio, per includere l'endpoint ACS, il certificato pubblico con cui AuthnRequests sarà firmato, il certificato con cui vuoi che il tuo partner cripta, gli attributi che hai richiesto, il tuo ID entità univoco, ecc. La cosa bella è che una volta determinato ciò di cui ha bisogno il tuo servizio, questi metadati non devono cambiare - per QUALSIASI partner. Puoi inviarlo a tutti i tuoi partner.

Una volta che il vostro partner riceve questi metadati, importano esso, e soddisfano gli attributi richiesti con le informazioni dalla loro repository di identità, configurare la firma e la crittografia, ecc Una volta che tutto è fatto mandano i loro metadati a te, che contiene i loro endpoint di protocollo (dove è necessario inviare AuthnRequests, ecc.), il certificato che può convalidare la propria firma, la convalida degli attributi che stanno inviando all'utente (questi possono cambiare in base alle conversazioni che si dovrebbero tenere partner) ecc.

Ottenete questi metadati, e importateli nel vostro sistema, e costruite le connessioni alle vostre app secondo necessità.