2013-07-01 4 views
1

신원 제휴 (Google, Facebook, 라이브 ID) 및 WCF SOAP 서비스로 Thintecture Identity Server를 구성했습니다.IdentityServer를 사용하여 SAML 토큰을 JWT 토큰으로 변환

이제 Windows Phone 응용 프로그램에 WCF Rest Endpoint (webHttpBinding)가 필요합니다. 권한 부여 헤더에 WSTrust SAML 토큰을 전달하고 싶지 않습니다. SamlToken을 JWT 토큰으로 변환하는 방법은 무엇입니까?

아래 코드는 시도했지만 작동하지 않습니다.

var factory = new WSTrustChannelFactory(
    new WindowsWSTrustBinding(SecurityMode.Transport), 
    new EndpointAddress("https://identityserver.local/issue/???")) 
{ 
    TrustVersion = TrustVersion.WSTrust13 
}; 

var rst = new RequestSecurityToken 
{ 
    RequestType = RequestTypes.Issue, 
    KeyType = KeyTypes.Bearer, 
    TokenType = TokenTypes.JsonWebToken, 
    AppliesTo = new EndpointReference("http://my.realm/") 
}; 

var securityToken = xmlToken.ToSecurityToken(); 
var response = factory.CreateChannelWithIssuedToken(securityToken).Issue(rst); 

도움 주셔서 감사합니다.

답변

0

JWT를 반환하도록 IdentityServer를 구성 할 수 있습니다. 글로벌 구성으로 이동하여 기본 토큰 유형을 JWT (기본 http 토큰 유형과 동일한 값)로 변경하십시오. 그렇게해야합니다.

업데이트 : IDSrv가 WSTrust를 전혀 사용하지 않는 이유는 무엇입니까? WS-Trust를 통한 Google.

+0

감사합니다. 두 개의 토큰이 필요합니다 ... WCF 데스크톱 클라이언트 (WPF, Windows Store) 용 SAML 하나와 REST 클라이언트 용 (Windows Phone, Android, iOS) 두 시나리오에서 JWT를 사용할 수 있습니까? 내일 나는 ACS Wrap Service를 시도 할 것이다 ... SAML을 JWT/SWT로 변환 할 것이다. 나는 지금이 작동하지 않습니까? 질문에 답하기 위해 WS-Federation을 Google, 라이브 ID 및 Facebook으로 (가정 영역 검색으로) 사용합니다. 예를 들어 Identity Sarver와 Facebook 간의 웹 요청 협상을 가로 채고 SAML 토큰을 얻습니다. SAML 토큰을 얻을 때 WS-Trust를 사용하여 JsonWebToken을 얻으려고했습니다. – zielu1

+0

예 - 작동하지 않습니다. 수동으로 변환 할 수 있지만 (서명 키가 필요함) ACS를 사용하여 변환 할 수 있습니다. 완벽한 솔루션은 없습니다.) 물론 IdSrv를 확장하여 그러한 서비스를 제공 할 수 있습니다. – leastprivilege

+0

IdSrv 확장은 매우 자연스럽고 간단한 솔루션처럼 보입니다. 나는이 방법을 시도 할 것이다. – zielu1

관련 문제