2013-03-11 8 views
6

The OAuth2 SAML bearer spec opisuje, w jaki sposób aplikacja może przedstawić potwierdzenie dla tokena punktu końcowego jako autoryzację grantu. Na przykład Salesforce's API pozwala na takie podejście, aby umożliwić aplikacjom autonomiczne żądanie tokenów dostępu dla konta użytkownika (o ile użytkownik już wyraził na to zgodę, poza pasmem).Jakie jest znaczenie SubjectConfirmation w udzieleniu autoryzacji SAML OAuth2?

Mam problem ze zrozumieniem, co oznacza to twierdzenie. Większość z nich jest wystarczająco jasna, np.

  • Issuer jest partia, która generowana (i podpisane) twierdzenie
  • Subject jest łatwy do którego konta token dostępu jest wymagany
  • AudienceRestriction ogranicza publiczność do punktu końcowego tokena.

Ale mam problemy ze zrozumieniem znaczenia:

  • AuthnStatement - Moje rozumienie ze spec SAML jest to, że wystawca tego twierdzenia jest uczynienie oświadczenie, że (emitent) uwierzytelnił podmiot. Czy to jest poprawne?

  • SubjectConfirmation - kto potwierdza co tutaj? Specyfikacja SAML w sposób pomocny stwierdza, że ​​ten element "Informacje, które umożliwiają potwierdzenie tematu". Ale co to jest potwierdzenie? A kto ją wykonuje, w jaki sposób, kiedy i w jakim celu?

Odpowiedz

3

AuthnStatement element opisuje akt uwierzytelnienia u dostawcy tożsamości. Jeśli wystawca potwierdził przedmiot, Asercja POWINIEN zawierać pojedynczą reprezentującą to zdarzenie uwierzytelniające.

przykład:

<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 elementem temu serwer autoryzacji potwierdzić, że jest Nośnik twierdzenia. Taki element MUSI mieć atrybut Method z wartością "urn: oasis: names: tc: SAML: 2.0: cm: bearer". Element SubjectConfirmation MUSI zawierać element SubjectConfirmationData (z wyjątkami) wskazujący adres URL punktu końcowego tokenu autoryzacji. Serwer autoryzacji MUSI sprawdzić, czy wartość atrybutu Recipient odpowiada adresowi punktu końcowego tokenu, do którego dostarczono potwierdzenie.

Przykład:

 <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

Tak, AuthnStatement jest od emitenta tego twierdzenia stwierdzającego, że został uwierzytelniony temat.

SubjectConfirmation mówi, w jaki sposób podmiot, który chce polegać na twierdzeniu, może potwierdzić, że dany podmiot jest podmiotem wymienionym w tym stwierdzeniu. Być może stwierdzenie jest ważne, ale czy jest to dla użytkownika, który złożył wniosek? Jeśli metoda jest nośna, to każdy podmiot, który może przedstawić to twierdzenie do punktu końcowego, o którym mowa w Recipient, przed potwierdzeniem w dniu . Jeśli metoda jest posiadaczem klucza, to tylko podmiot, który może potwierdzić posiadanie klucza, do którego odnosi się zagnieżdżony element KeyInfo, zostaje potwierdzony.

Powiązane problemy