2013-03-11 2 views
6

OAuth2 SAML bearer spec описывает, как приложение может представить утверждение конечной точке токена в качестве разрешения на разрешение. Например, Salesforce's API позволяет этому подходу разрешить приложениям автономно запрашивать токены доступа для учетной записи пользователя (если пользователь уже дал разрешение на это, вне диапазона).В чем смысл SubjectConfirmation в разрешении на авторизацию SAML OAuth2?

У меня возникли проблемы с пониманием того, что означает утверждение. Большая часть этого достаточно ясна, например.

  • Issuer является стороной, которая генерируется (и подпись) утверждение
  • Subject является пользователем за счет которого маркер доступа запрашивается
  • AudienceRestriction ограничивает аудиторию маркера конечной точки.

Но у меня возникают проблемы с пониманием смысла:

  • AuthnStatement - Мое понимание от SAML спецификации является то, что эмитент этого утверждения делает заявление, что он (эмитент) аутентифицировал предмет. Это правильно?

  • SubjectConfirmation - кто подтверждает, что здесь? Спектр SAML помогает утверждать, что этот элемент «Информация, позволяющая подтвердить объект». Но что такое подтверждение? И кто его выполняет, и как, и когда и с какой целью?

ответ

3

элемент описывает акт аутентификации в поставщике удостоверений. Если уполномоченный по утверждению аутентифицировал субъекта, утверждение ДОЛЖНО содержать сингл, представляющий это событие аутентификации.

Пример:

<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 элемент позволяет серверу авторизации для подтверждения его в качестве канала передачи утверждения. Такой элемент ДОЛЖЕН иметь атрибут Method со значением «urn: oasis: names: tc: SAML: 2.0: cm: bearer». Элемент SubjectConfirmation ДОЛЖЕН содержать элемент SubjectConfirmationData (с исключениями), указывающий URL-адрес конечной точки маркера сервера авторизации. Сервер авторизации ДОЛЖЕН подтвердить, что значение атрибута получателя соответствует URL-адресу конечной точки маркера, которому было передано утверждение.

Пример:

 <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

Да, AuthnStatement от эмитента этого утверждения о том, что она подтвердила подлинность предмета.

SubjectConfirmation рассказывает, как субъект, который хочет полагаться на утверждение, может подтвердить, что предметом, на который ссылается данный объект, является объект, на который делается ссылка в этом утверждении. Может быть, утверждение действительно, но это для пользователя, делающего запрос? Если метод является носителем, то подтверждается любой субъект, который может представить это утверждение конечной точке, указанную в Recipient, до даты, указанной в NotOnOrAfter. Если метод является держателем ключа, то подтверждается только субъект, который может доказать владение ключом, на который ссылается вложенный элемент KeyInfo.