2015-01-23 4 views
4

ID 공급자 인 SSO를 구현하고 있습니다. 현재 서비스 공급자에 성공적으로 로그인 할 수 있습니다. 그러나 그것은 홈 페이지에 나를 데려 간다. 응답을 게시 할 때 방문 페이지 URL을 지정하고 싶습니다. 꽤 많이 검색했지만 설득력있는 것을 찾을 수 없습니다. SAML 응답의 어떤 요소가 방문 페이지 URL을 포함하는지 또는 지정해야하는 양식인지는 알 수 없습니다. java 및 opensaml 라이브러리를 사용하여 응답을 생성합니다.SSO - SAML, 로그인 성공 후 지정한 방문 페이지로 사용자 리디렉션

+0

어떻게 했습니까? 나는 성공한 작업에 매달 렸습니다. 어떻게 샘을 만들었습니까? –

답변

6

SAML 사양에는 없지만 사실상 표준은 RelayState 요소를 사용하는 것입니다. SAMLResponse 매개 변수 및 landing URL 값 외에도 응답의 매개 변수로 추가됩니다. 응답을 바인딩 POST를 사용하여 IDP에 대한 http://en.wikipedia.org/wiki/SAML_2.0에서 샘플 HTML 페이지 :

<form method="post" action="https://sp.example.com/SAML2/SSO/POST" ...> 
    <input type="hidden" name="SAMLResponse" value="<response>" /> 
    <input type="hidden" name="RelayState" value="<url>" /> 
    ... 
    <input type="submit" value="Submit" /> 
</form> 

편집 :의 RelayState 매개 변수 선언
그냥 명확하게 할 수있는 사양의
부분이며이 가능하도록 포함되어 있습니다 임의의 상태를 SP와 IDP 사이에 전달하십시오. 방문 페이지를 정의하는 URL을 전달할 때 URL을 사용하는 것은 사양에 정의되어 있지 않지만 사실상 표준 용도입니다. IDP-init-SSO에서 RelayState을 사용하는 것은 IDP와 SP 사이의 쌍방향 합의에 달려 있으며 이는 합리적이고 유용하며 널리 채택 된 계약입니다.

+0

인코딩되지 않은 URL을 전달하면 안전합니까? SP 끝은 나에게 "찾을 수 없습니다"라고 말하면서 끝까지 해독하지 않을 것입니다. 그러나 인코딩없이 작동합니다. – user3391212

+0

죄송합니다, 나는 HTTP POST에서 전달할 때 URL로 인코딩된다는 것을 전제로하고 있습니다. HTML 형식으로 축 어적으로 배치하면 브라우저가 URL 인코딩합니다. 그래서 내가 준 샘플에서는 실제 값을''에 넣을 것입니다. 나는 그 본문을 편집 할 것이다. –

+0

gotcha! 덕분에 – user3391212