1
我配置了带有联合身份验证(谷歌,脸书,live id)的Thintecture Identity Server和WCF SOAP服务。使用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);
感谢您的帮助。
谢谢,回答。我需要两个令牌...一个用于WCF桌面客户端(WPF,Windows Store)的SAML,另一个用于REST客户端(Windows Phone,Android,iOS)或者可以在两种场景中使用JWT? 明天我会尝试ACS Wrap Service ...这将把SAML转换成JWT/SWT。我现在不会这么做吗? 并回答你的问题我使用WS联合(与家庭领域发现)谷歌,现场ID和Facebook。我拦截Identity Sarver和Facebook之间的Web请求协商,并获得SAML令牌。当我获得SAML令牌时,我尝试使用WS-Trust来获取JsonWebToken。 – zielu1
是的 - 这不起作用 - 你可以手动转换它(但需要一个签名密钥)或使用ACS来转换它。没有一个是完美的解决方案;)当然,您可以扩展IdSrv为您提供这样的服务。 – leastprivilege
扩展IdSrv是个好主意......这看起来非常自然和简单的解决方案。我会试试这种方式。 – zielu1