2016-03-08 22 views
5

Tôi loại hiểu cơ bản SAML thẩm vụ phải làm việc: tài nguyên yêu cầuSAML Yêu cầu thuộc tính Trong AuthnRequest

tài khoản tại SP
SP gửi yêu cầu auth để IDP
IDP xác thực người dùng và gửi lại một số userId
SP sẽ gửi thuộc tính truy vấn để IDP cho biết thêm chi tiết với userId
IDP gửi lại các thuộc tính
SP mang đến cho người sử dụng tài nguyên

vấn đề của tôi là, có thể giúp bạn bất kỳ attribut cách bypass eQuery. Khi tôi thực hiện yêu cầu SAML 2.0 cho máy chủ Gluu/Shibboleth thử nghiệm của mình, tôi lấy lại givenName (firstname) và sn (họ). Có cách nào tôi có thể yêu cầu inum id người dùng và email chỉ trong AuthnRequest?

Yêu cầu của tôi là khá đơn giản:

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

Yêu cầu tôi nhận được lại là một cái gì đó như thế này:

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

Tôi đọc phần có liên quan của spec, và có vẻ như để nói rằng máy chủ có thể trả lại bất cứ điều gì nó muốn thực sự (và bao nhiêu thuộc tính nó muốn)? Một lần nữa, câu hỏi của tôi là liệu tôi có thể ép buộc máy chủ SAML Gluu/Shibboleth cung cấp cho tôi các thuộc tính cụ thể như một phần của AuthnRequest hay không.

Trả lời

2

Bạn cần phải thêm thuộc tính mong muốn vào thuộc tính đã phát hành trong mối quan hệ tin cậy của bạn trên IdP. Afaik không có cách nào để yêu cầu các thuộc tính cụ thể.

+0

Tôi ghét bạn ..... – jn1kk

+0

@Mike git good. – jn1kk

3

Chỉ cần cung cấp chi tiết hơn một chút, thời gian để bạn yêu cầu các thuộc tính bổ sung khi SP là khi bạn gửi siêu dữ liệu đến IdP. Siêu dữ liệu đó mô tả dịch vụ của bạn, để bao gồm điểm cuối ACS, chứng chỉ công khai mà AuthnRequests của bạn sẽ ký, chứng chỉ mà bạn muốn đối tác của mình mã hóa, các thuộc tính mà bạn yêu cầu, ID tổ chức duy nhất của bạn, v.v. là khi bạn xác định dịch vụ của mình cần gì, siêu dữ liệu này không phải thay đổi - đối với bất kỳ đối tác nào. Bạn có thể gửi nó cho tất cả mọi người bạn hợp tác với.

Khi đối tác của bạn nhận được siêu dữ liệu này, họ nhập dữ liệu và hoàn thành các thuộc tính bạn yêu cầu với thông tin từ kho lưu trữ danh tính của họ, định cấu hình ký và mã hóa, v.v. Sau khi mọi thứ được thực hiện, họ gửi siêu dữ liệu của bạn cho bạn các điểm cuối giao thức của chúng (nơi bạn cần gửi AuthnRequests, v.v.), chứng chỉ có thể xác thực việc ký, xác thực các thuộc tính mà chúng đang gửi cho bạn (những điều này có thể thay đổi, dựa trên các cuộc hội thoại mà bạn nên giữ đối tác) v.v.

Bạn nhận siêu dữ liệu này và nhập siêu dữ liệu vào hệ thống của bạn và tạo (các) kết nối cho ứng dụng của bạn nếu cần.

Các vấn đề liên quan