2013-03-11 9 views
6

Il OAuth2 SAML bearer spec descrive come un'applicazione può presentare un'asserzione a un endpoint token come concessione di autorizzazione. Ad esempio, Salesforce's API consente a questo approccio di abilitare le app a richiedere autonomamente token di accesso per un account utente (a condizione che l'utente abbia già dato il permesso per questo, fuori banda).Qual è il significato di SubjectConfirmation in OAuth2 Sovvenzione autorizzazione SAML?

Sto avendo problemi a dare un senso a ciò che l'asserzione significa, però. La maggior parte è abbastanza chiara, ad es.

  • Issuer è il partito che ha generato (e firmato) l'affermazione
  • Subject è l'utente per cui account viene richiesto un token di accesso
  • AudienceRestriction limita il pubblico al punto finale token.

ma sto avendo difficoltà a capire il significato di:

  • AuthnStatement - La mia comprensione dalla specifica SAML è che l'emittente di questa affermazione sta facendo l'affermazione che essa (l'emittente) ha autenticato l'argomento. È giusto?

  • SubjectConfirmation - chi sta confermando cosa? Le specifiche SAML indicano utilmente che questo elemento "Informazioni che consente di confermare il soggetto". Ma cos'è la conferma? E chi lo esegue, e come, e quando e per quale scopo?

risposta

3

AuthnStatement elemento descrive l'atto di autenticazione presso il provider di identità. Se l'emittente di asserzione ha autenticato l'oggetto, l'asserzione DOVREBBE contenere un singolo che rappresenta quell'evento di autenticazione.

Esempio:

<AuthnStatement AuthnInstant="2010-10-01T20:07:34.371Z"> 
      <AuthnContext> 
       <AuthnContextClassRef> 
    <!--Authentication method, was the client authenticated with digital cert, password, kerberos token?--> 
       urn:oasis:names:tc:SAML:2.0:ac:classes:X509 

<!--For example, the Password class is applicable when a principal authenticates to an authentication authority through the presentation of a password over an unprotected HTTP session. --> 
       urn:oasis:names:tc:SAML:2.0:ac:classes:Password 

       urn:oasis:names:tc:SAML:2.0:ac:classes:Kerberos 

       </AuthnContextClassRef> 
      </AuthnContext> 
      </AuthnStatement> 

SubjectConfirmation elemento consente al server di autorizzazione per confermare come un portatore asserzione. Tale elemento DEVE avere un attributo Method con un valore di "urn: oasis: names: tc: SAML: 2.0: cm: bearer". L'elemento SubjectConfirmation DEVE contenere un elemento SubjectConfirmationData (con eccezioni) che indica l'URL dell'endpoint del token del server di autorizzazione. Il server delle autorizzazioni DEVE verificare che il valore dell'attributo Recipient corrisponda all'URL dell'endpoint del token a cui è stata consegnata l'Asserzione.

Esempio:

 <saml:SubjectConfirmation> 
<!-- Mandatory --> 
     Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"> 
     <saml:SubjectConfirmationData> 
<!-- The AuthRequest sent this ID --> 
     InResponseTo="aaf23196-1773-2113-474a-fe114412ab72" 
<!-- It was through HTTP POTS token endpoint URL --> 
     Recipient="https://sp.example.com/SAML2/SSO/POST" 
<!-- Not valid ON or After this Date--> 
     NotOnOrAfter="2004-12-05T09:27:05"/> 
    </saml:SubjectConfirmation> 
0

Sì, il AuthnStatement da l'emittente di questa affermazione dichiarando di aver autenticato il soggetto.

SubjectConfirmation indica come un'entità che vuole fare affidamento su un'affermazione può confermare che l'argomento in questione è l'argomento a cui si fa riferimento in questa asserzione. Forse l'asserzione è valida, ma è per l'utente che effettua la richiesta? Se il metodo è al portatore, qualsiasi argomento che possa presentare questa asserzione all'endpoint referenziato in Recipient prima della data in è confermato. Se il metodo è holder-of-key, viene confermato solo un soggetto che può provare il possesso della chiave a cui fa riferimento un elemento nidificato KeyInfo.