우리 회사는 현재 Java 웹 애플리케이션을 개발하고 있습니다. 일부 고객은 내부 SAML 서버 (ID 제공자?)를 가지고 있으며 이들과 통합하도록 요청했습니다. 그래서 최근에 나는 그것에 대해 읽고 OpenAM을 가지고 놀았습니다. 약 3 일이 지나면 전반적으로 이해하게되지만 여전히 내 지식에 약간의 차이가 있습니다. 내 희망은 누군가 나를 위해 이것을 해결할 수 있다는 것입니다.
여기에 사용자가 로그인하는 워크 플로를 상상하는 방법이 있습니다.
고객 SAML 서버를 https://their.samlserver.com 으로 정의하겠습니다 . 따라서 사용자는 보호되는 리소스를 위해 웹 애플리케이션을 찾습니다. URL이 http://my.app.com/something .
따라서 내가 맞다면 my.app.com 은 SAML이 서비스 제공 업체 로 정의한 것 입니다. 애플리케이션은이 사용자가 로그인해야한다는 것을 인식합니다. 그런 다음 이와 같은 페이지를 사용자에게 표시합니다.
<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>
그리고 그것은 이것의 인코딩 된 버전 someBase64Data
이어야합니다 base64
...
<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>
그래서 내 첫 몇 가지 질문.
ID 값 은 무엇입니까 ?
그리고 왜 본인을 발행자 로 선언 할 수 있습니까?
아이덴티티 공급자가 나에 대해 알고 있습니까? 아마도 이것이 내가보고있는 신뢰의 원 일지도 몰라 OpenAM 원일 것 입니다. 그리고 그것이 나에 대해 안다면, 어떻게 나에 대해 알고 무엇을 알아야합니까?
따라서 사용자가 해당 페이지를 전달하면 IDP https://their.samlserver.com에서 제공하는 페이지로 이동 합니다. 그들은 해당 페이지에서 인증하고 IDP는 인증을 확인하고 사용자를 찾는 것이 마술입니다. 인증이 성공하면 IDP는 여기 에 <samlp:Response>
정의 된 .
몇 가지 질문이 더 있습니다.
첫째, 어떻게 <samlp:Response>
웹 애플리케이션으로 돌아가서 확인할 수있는 방법은 무엇입니까?
성공 여부를 확인하기 위해 그 응답에서 무엇을 찾아야합니까? 실패는 어떻게 생겼습니까?
현재 이메일 주소 (LDAP)를 사용하여 사용자를 식별하므로 응답에서이를 가져와 지금과 같은 방식으로 사용할 것입니다. 그 응답에서 내가 염두에 두어야 할 다른 것이 있습니까?
이제 해당 응답의 유효성을 확인 했으므로 현재처럼 사용자에게 세션을 부여 할 수 있습니다. 하지만 로그 아웃을 원할 때이를위한 워크 플로가 있습니까? 사용자가 탈퇴했음을 IDP에 알려야합니까?
그리고 마지막으로, 제 독서에 던져진 몇 가지 주제가 있는데,이 워크 플로에 어떻게 적용되는지 잘 모르겠습니다. 그것들은 신뢰의 원 , 토큰 및 아티팩트 입니다.
모두에게 도움을 주셔서 감사합니다. 나는 지난 며칠 동안 많은 정보를 발견했고, 조금 더 플레이 한 후에 그것들을 모을 수있을 것입니다. 그러나 아직 간단한 "게시물이 있습니다"워크 플로 문서를 아직 찾지 못했습니다. 이것이 어떻게 작동하는지 내가 잘못했기 때문일 수 있습니다. 그다지 인기가 없기 때문일 수도 있습니다. 하지만 저는 사용자 인증만큼 중요한 일에서 중요한 단계를 놓치지 않도록 워크 플로가 있는지 확인하고 싶었습니다.