2011-08-25 1 views
2

Silverlight 4 플랫폼 (WS-Trust)에서 사용자 인증을 위해 IdentityServer를 사용합니다 ..
사용자가 적절한 자격 증명을 보내면 물론 토큰 쿠키가 생성됩니다.
암호가 올바르지 않은 경우 Silverlight 응용 프로그램이 HTTP 상태 코드 500 (SOAP 사양에서 /로 정의 된 SOAP 예외를 보내기위한 표준 값)을 받음WIF 및 SOAP 결과 검사 - Windows Identity Foundation이 다시 공격합니다. (

Silverlight http stack은 상태 코드가있는 결과를 무시하고, 그래서 STS 클라이언트에 보내기 전에이 상태 코드를 수정하려면 강제로했습니다. 설치/objec 내 인스턴스를 등록 할 것을 시도하고 있었다. (즉, SilverlightFaultBehavior는 Silverlight와 협력하는 WCF 서비스에 대한 수정을 수행합니다.)하지만 MS Guys가 다시 한 번 이상한 방식으로 (또는 뭔가를 모릅니다.) 보였습니다.

결과는 (암호가 괜찮습니다) 암호가 내 incpection 개체의 방법은 모든 난에 호출되지 잘못 때이 HTTP 상태 코드를 수정하고 내 방법이 IDispatchMessageInspector 인터페이스 객체에 호출되지만 확인되면 결과 (HTTP 상태 코드)를 수정할 수 없으므로 결과는 다시 500입니다.

IdentityServer는 WSTrust의 전체 처리가 WIF에서만 수행되므로 올바른 구성으로 WSTrustServiceHost 호스트 객체를 인스턴스화합니다.

토큰이 이미 오래된 경우에 어떤 일이 일어날 지 모르겠습니다. WIF는 HTTP 상태 500의 예외도 발생합니까? Silverlight 플랫폼에서 WIF에 의해 생성 된 예외를 읽을 수 있습니까?

Silverlight 5는 WS-Trust를 지원해야하지만 STS 서버가 HTTP 상태 500을 보내면 예외 정보가 다시 무시됩니까? 아무도 Silverlight 5로 테스트했거나 그런 문제의 해결책을 알고 있습니까?

답변

0

클라이언트 네트워킹 스택을 사용하면 Silverlight에서 모든 HTTP 상태 코드를받을 수 있습니다. 기본적으로 Silverlight는 특정 제한을 설정하는 브라우저를 통해 모든 HTTP 요청을 지정합니다.

How to: Specify Browser or Client HTTP Handling (MSDN)

+0

와우. 이게 새로운 것인가? 웹 서비스에서 장애를 되 찾는 주제에 관해서는 아무도 이것을 가져다 본 적이 없다. 일반적으로 사람들은 응답 코드가 200이 아니기 때문에 오류를 얻을 수 없다고 말합니다.이 문제를 해결하는 것 같습니다. –

+0

이전에이 옵션을 고려했지만 WIF 토큰이 쿠키에 저장되어 있기 때문에 http 스택에 'set-cookie'지원이 필요합니다. 클라이언트 스택 (불행하게도)은 추가 작업을 많이하지 않으면이 문제를 해결하지 못합니다. 영국의 Mike Taulty에 의해 여기에 설명되어 있습니다. http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2009/11/18/silverlight-4-rough-notes-networking.aspx –

+0

http 스택 등에서 쿠키를 공유하는 것을 의미합니다 ... –