2011-03-15 7 views
1

사용자 이름을 얻기 위해 SAMLResponse을 포함하는 응답을 요청하려면 HttpWebRequest을 작성합니다.
응답은 Httpmodule에 의해 선택됩니다.
AuthRequest을 빌드 한 후 (다음과 같이) XML은 defalted되고 base64로 인코딩 된 다음 URL로 인코딩됩니다. requestStream.Write(postBytes, 0, postBytes.Length)에 대한HttpWebRequest - 데이터 추가

<samlp:AuthnRequest xmlns:samlp=urn:oasis:names:tc:SAML:2.0:protocol xmlns:saml=urn:oasis:names:tc:SAML:2.0:assertion ProtocolBinding=urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST Version= version ID= iD 
IssueInstant=DateTime.Now.ToString() Destination= destination /> 

<saml:Issuer> issuer /saml:Issuer> 

<samlp:NameIDPolicy AllowCreate=true Format=urn:oasis:names:tc:SAML:2.0:nameid-format:transient/>  
</samlp:AuthnRequest> 

내 postBytes는 희망 나는 아직 당신을 분실 havent 한 "SAMLRequest=" + SAMLRequest

에서 만든 문자열에서 byte[]로 구성되어 있습니다.
제 질문은 SAMLRequest의 값을 폼에 배치해야합니까? 아니면 인코딩 된 XML이 될 수 있습니까? 이 결정을 어떻게 결정합니까?

미리 감사드립니다. saml.xml.org에 따르면

+0

올바르게 이해 했습니까? httprequest에 SAML XML을 추가 할 인증 httpmodule을 작성하고 있습니까? http 파이프 라인의 어떤 단계에서 어떤 일이 일어나고 있습니까? –

+0

예, 요청에 SAML XML을 추가하고 IdP로 보내려고합니다. 사용자가 인증하고 새로운 요청이 전송되어 PreRequestHandlerExecute 이벤트 – 5n0u7

답변

0

:

POST /SAML2/SSO/POST HTTP/1.1 
Host: idp.example.org 
Content-Type: application/x-www-form-urlencoded 
Content-Length: nnn 
SAMLRequest=request&RelayState=token 

할 수 있습니다 물론 assemble a HttpWebRequest in C# code 중첩 된 형태와 관련된 문제를 방지하기 위해이 양식의 내용이 다음 IdP가 발행 POST 요청은 다음과 같은 내용이있다.

saml.xml.org 링크는 IdP가있는 경우

(같은 OpenSSO)를 구할 수는 있어야 " SAMLRequest 파라미터 값은<samlp:AuthnRequest>소자의 Base64 인코딩 인"것으로 지정 테스트하고 작동하는 것을 볼 수 있습니다.

아래 다이어그램에서 3 단계를 구현하려고한다고 가정합니다.

면책 조항 : 본인이 직접 시도하지 않았으므로이 답변의 유용 여부에 대한 의견을 보내 주시기 바랍니다. enter image description here

+0

에 포착됩니다. 사용자가 인증에 실패하거나 요청에 SAMLResponse가 포함되지 않은 경우 다시 시도 할 수있는 옵션이 표시됩니다. 이 버튼을 클릭하면 SAML AuthnRequest가있는 HttpWebRequest가 생성됩니다. (원래의 Q는 이것을 첨부하는 방법이었습니다) 다이어그램은 완벽한 표현은 아니지만 3 단계와 5 단계를 조합 한 것입니다. – 5n0u7

+0

예, 올바른 방향입니다. 내 질문은 : SAMLRequest의 요청 값 = 요청; 인코딩 된 xml authRequest 또는 인코딩 된 authRequest가 숨겨진 필드로 포함 된 양식이어야합니까? [btw 당신의 도움에 감사드립니다] – 5n0u7

+0

AHH 고마워요! 나는 그 선을 놓친다고 믿을 수 없다! SAMLRequest 매개 변수의 값은 요소의 base64 인코딩입니다. " – 5n0u7