【问题标题】:Convert SAML token into JWT token using IdentityServer使用 IdentityServer 将 SAML 令牌转换为 JWT 令牌
【发布时间】:2013-06-28 14:08:05
【问题描述】:

我为 Thintecture Identity Server 配置了身份联合(google、facebook、live id)和 WCF SOAP 服务。

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

感谢您的帮助。

【问题讨论】:

    标签: wif saml federated-identity jwt ws-trust


    【解决方案1】:

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

    更新:您为什么要使用 WSTrust - IdSrv 不支持身份验证,例如谷歌通过 WS-Trust。

    【讨论】:

    • 谢谢您的回答。我需要两个令牌...一个用于 WCF 桌面客户端(WPF、Windows Store)的 SAML 和一个用于 REST 客户端(Windows Phone、Android、iOS)的 SAML,或者在这两种情况下都可以使用 JWT?明天我将尝试 ACS Wrap Service... 它将 SAML 转换为 JWT/SWT。我现在不知道这会起作用吗?在回答您的问题时,我将 WS-Federation 与(通过家庭领域发现)Google、Live Id 和 Facebook 结合使用。例如,我拦截 Identity Sarver 和 Facebook 之间的 Web 请求协商并获取 SAML 令牌。当我获得 SAML 令牌时,我尝试使用 WS-Trust 来获取 JsonWebToken。
    • 是的 - 这不起作用 - 您可以手动转换它(但这需要签名密钥)或使用 ACS 来转换它。没有一个是完美的解决方案;)当然,您可以扩展 IdSrv 来为您提供这样的服务。
    • 扩展 IdSrv 是个好主意……这看起来是非常自然和简单的解决方案。我会尝试这种方式。
    猜你喜欢
    • 2014-10-12
    • 2017-05-09
    • 2019-06-03
    • 1970-01-01
    • 2019-07-13
    • 2012-11-20
    • 2020-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多