我使用身份联盟(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。