2013-03-11 34 views
6

OAuth2 SAML bearer spec mô tả cách ứng dụng có thể trình bày xác nhận cho điểm cuối mã thông báo làm khoản cấp phép. Ví dụ: Salesforce's API cho phép phương pháp này cho phép các ứng dụng tự động yêu cầu mã thông báo truy cập cho tài khoản người dùng (miễn là người dùng đã cấp quyền cho điều này, ngoài băng).Ý nghĩa của SubjectConfirmation trong cấp phép SAML OAuth2 là gì?

Tôi đang gặp sự cố khi hiểu ý nghĩa của xác nhận. Hầu hết là đủ rõ ràng, ví dụ:

  • Issuer là bên đó được tạo ra (và đã ký) sự khẳng định
  • Subject là người sử dụng cho tài khoản mà một thẻ truy cập đang được yêu cầu
  • AudienceRestriction giới hạn khán giả đến endpoint token.

Nhưng tôi đang gặp rắc rối hiểu được ý nghĩa của:

  • AuthnStatement - hiểu biết của tôi từ spec SAML là người phát hành khẳng định này được đưa ra tuyên bố rằng nó (tổ chức phát hành) đã xác thực chủ đề. Thê nay đung không?

  • SubjectConfirmation - ai đang xác nhận điều gì ở đây? Thông số SAML nêu rõ rằng yếu tố này "Thông tin cho phép đối tượng được xác nhận". Nhưng xác nhận là gì? Và ai thực hiện nó, và làm thế nào, và khi nào, và cho mục đích gì?

Trả lời

3

AuthnStatement yếu tố mô tả hành động xác thực tại nhà cung cấp danh tính. Nếu tổ chức phát hành xác thực đã xác thực chủ đề, xác nhận NÊN chứa một đơn thể hiện sự kiện xác thực đó.

Ví dụ:

<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 yếu tố cho phép máy chủ uỷ quyền để xác nhận nó như là một Bearer Assertion. Phần tử này PHẢI có thuộc tính Method với giá trị là "urn: ốc đảo: tên: tc: SAML: 2.0: cm: bearer". Phần tử SubjectConfirmation PHẢI chứa phần tử SubjectConfirmationData (Có ngoại lệ) cho biết URL điểm cuối mã thông báo của máy chủ ủy quyền. Máy chủ ủy quyền PHẢI xác minh rằng giá trị của thuộc tính Người nhận khớp với URL điểm cuối mã thông báo mà Assertion đã được phân phối.

Ví dụ:

 <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

Vâng, AuthnStatement là từ người phát hành khẳng định này nói rằng nó đã được chứng thực đề tài này.

SubjectConfirmation cho biết cách thực thể muốn dựa vào xác nhận có thể xác nhận rằng đối tượng được đề cập là chủ đề được tham chiếu trong xác nhận này. Có lẽ xác nhận là hợp lệ, nhưng liệu nó có cho người dùng đưa ra yêu cầu không? Nếu phương thức là bearer thì bất kỳ đối tượng nào có thể trình bày xác nhận này đến điểm cuối được tham chiếu trong Recipient trước ngày trong số NotOnOrAfter được xác nhận. Nếu phương thức là chủ sở hữu khóa thì chỉ có một chủ thể có thể chứng minh được quyền sở hữu khóa được tham chiếu bởi phần tử lồng nhau KeyInfo được xác nhận.