Công ty của tôi hiện đang phát triển một ứng dụng web Java. Một vài khách hàng của chúng tôi có máy chủ SAML nội bộ (nhà cung cấp danh tính?) Và đã yêu cầu chúng tôi tích hợp với họ. Vì vậy, gần đây tôi đã đọc về nó và chơi với OpenAM. Sau khoảng 3 ngày kể từ ngày này, tôi đã hiểu tổng quát về nó, nhưng vẫn còn một số lỗ hổng trong kiến thức của tôi. Hy vọng của tôi là ai đó có thể giải tỏa điều này cho tôi.
Vì vậy, đây là cách tôi hình dung quy trình làm việc của một người dùng đăng nhập.
Hãy xác định máy chủ SAML của khách hàng là https://their.samlserver.com . Vì vậy, một người dùng đến với ứng dụng web của chúng tôi để nhận tài nguyên được bảo vệ. Giả sử URL đó là http://my.app.com/something .
Vì vậy, nếu tôi đúng, my.app.com là những gì SAML định nghĩa là Nhà cung cấp dịch vụ . Ứng dụng của chúng tôi nhận ra rằng người dùng này cần đăng nhập. Sau đó, chúng tôi trình bày một trang như thế này cho người dùng ...
<script>JQuery Script to auto submit this form on ready</script>
<form method="post" action="https://their.samlserver.com/Post/Servlet">
<input type="hidden" name="SAMLRequest" value="someBase64Data" />
<input type="submit" value="Submit" />
</form>
Và đó someBase64Data
nên được base64
mã hóa phiên bản này ...
<samlp:AuthnRequest
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
ID="identifier_1"
Version="2.0"
IssueInstant="2004-12-05T09:21:59Z"
AssertionConsumerServiceIndex="0">
<saml:Issuer>http://my.app.com</saml:Issuer>
<samlp:NameIDPolicy
AllowCreate="true"
Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient"/>
</samlp:AuthnRequest>
Vì vậy, vài câu hỏi đầu tiên của tôi.
Là gì ID giá trị giả được?
Và tại sao tôi có thể tuyên bố mình là Nhà phát hành ?
Nhà cung cấp danh tính có biết về tôi không? Có lẽ đây là Vòng tròn tin cậy mà tôi đã thấy trên OpenAM . Và nếu nó biết về tôi, làm thế nào nó biết về tôi và nó cần biết những gì?
Vì vậy, sau khi người dùng được chuyển tiếp trang đó, họ sẽ được đưa đến một trang do IDP https://their.samlserver.com cung cấp . Họ xác thực trên trang đó và IDP thực hiện điều kỳ diệu để xác thực xác thực và tra cứu người dùng. Sau khi xác thực thành công, IDP sẽ gửi lại một <samlp:Response>
xác định tại đây .
Một vài câu hỏi nữa.
Đầu tiên, làm cách nào để <samlp:Response>
quay lại ứng dụng web của tôi để tôi có thể kiểm tra nó?
Và tôi nên tìm kiếm điều gì trong phản hồi đó để xác nhận rằng nó đã thành công? Thất bại trông như thế nào?
Chúng tôi hiện đang sử dụng địa chỉ email (LDAP) để xác định người dùng, vì vậy có thể chúng tôi sẽ lấy địa chỉ đó từ phản hồi và sử dụng địa chỉ đó theo cách chúng tôi làm hiện nay. Còn điều gì khác mà tôi nên lưu tâm trong phản hồi đó không?
Vì vậy, bây giờ chúng tôi đã kiểm tra tính hợp lệ của phản hồi đó, chúng tôi có thể cấp cho người dùng một phiên như hiện tại. Nhưng khi họ muốn đăng xuất, có quy trình làm việc cho điều đó không? Tôi có phải thông báo cho IDP rằng người dùng đã rời đi không?
Và cuối cùng, có một vài chủ đề đã được xoay quanh trong bài đọc của tôi và tôi không chắc chúng phù hợp với quy trình làm việc này như thế nào. Họ là các mối tin cậy , Token , và hiện vật .
Cảm ơn mọi người đã giúp đỡ Tôi đã tìm thấy rất nhiều thông tin trong vài ngày qua, và có thể tôi có thể ghép chúng lại với nhau sau khi chơi nhiều hơn một chút. Nhưng tôi vẫn chưa tìm thấy bài viết quy trình làm việc "Đây là bài đăng" đơn giản. Có lẽ đó là bởi vì tôi sai về cách hoạt động của nó Có lẽ đó là bởi vì điều này không phổ biến. Nhưng tôi thực sự muốn đảm bảo rằng tôi đã nắm được quy trình làm việc để không bỏ lỡ một bước quan trọng nào đó quan trọng như xác thực người dùng.