使用IdentityServer将SAML令牌转换为JWT令牌



我使用身份联盟(google、facebook、live-id)和WCF SOAP服务配置了Thintecture Identity Server。

现在我需要用于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);

谢谢你的帮助。

您可以配置IdentityServer以返回JWT。转到全局配置,将默认令牌类型更改为JWT(与默认http令牌类型的值相同)。这样就可以了。

更新:为什么要使用WSTrust?IdSrv不支持身份验证,例如google over WS-Trust。

相关内容

  • 没有找到相关文章

最新更新