使用 WS-Federation 进行 JWT 配置

Posted

技术标签:

【中文标题】使用 WS-Federation 进行 JWT 配置【英文标题】:JWT configuration with WS-Federation 【发布时间】:2014-11-23 20:56:33 【问题描述】:

我在使用 JWT 令牌作为验证时遇到问题。问题是流程调用函数 JwtSecurityTokenHandler.ReadOnlyCollection ValidateToken(SecurityToken token)。这是过时的,它告诉我使用函数 JwtSecurityTokenHandler.ClaimsPrincipal ValidateToken(string securityToken, TokenValidationParameters validationParameters, out SecurityToken encryptedToken)。但是我该怎么做呢?

我的 web.config 就是这样配置的。

<system.identityModel>
<identityConfiguration saveBootstrapContext="true">
  <audienceUris>
    <add value="urn:xyz" />
  </audienceUris>
  <securityTokenHandlers>
    <add type="System.IdentityModel.Tokens.JwtSecurityTokenHandler, System.IdentityModel.Tokens.Jwt, Version=4.0.0.0" />
    <securityTokenHandlerConfiguration>
      <certificateValidation certificateValidationMode="PeerTrust" />
    </securityTokenHandlerConfiguration>
  </securityTokenHandlers>
  <issuerNameRegistry type="System.IdentityModel.Tokens.ConfigurationBasedIssuerNameRegistry, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
            <trustedIssuers>
                <add name="XXX" thumbprint="[NNN]" />
            </trustedIssuers>
        </issuerNameRegistry>
  <issuerTokenResolver type="System.IdentityModel.Tokens.NamedKeyIssuerTokenResolver, System.IdentityModel.Tokens.Jwt, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</identityConfiguration>
</system.identityModel>
  <system.identityModel.services>
   <federationConfiguration>
     <wsFederation passiveRedirectEnabled="true" issuer="https://xxx/issue/wsfed" realm="urn:xyz" requireHttps="true" />
        </federationConfiguration>
       </system.identityModel.services>

【问题讨论】:

【参考方案1】:

致所有有同样问题的人。我找到了解决这个问题的方法。这是一个中间解决方案,如果有人能解决这个问题,仍然会很感激。

问题是 System.IdentityModel.Tokens.Jwt, Version=4.0.0.0 已将其设为 Validate(SecurityToken) 功能 JwtSecurityTokenHandler 已过时。

如果您只想通过配置启用 JWT-tokes,请使用版本 3.0.2 的 nuget。 如果您宁愿坚持使用最新版本,您可以反映 上一版本的 Validate 函数中包含的逻辑 并将其放入从 JwtSecurityTokenHandler 继承的类中 在配置中注册。

正如我之前提到的,我仍然希望以比我上面描述的两种方法更好的方式解决这个问题。

【讨论】:

以上是关于使用 WS-Federation 进行 JWT 配置的主要内容,如果未能解决你的问题,请参考以下文章

如何从桌面应用程序登录到 OWIN Web Api 2 WS-Federation 服务器

如何在 python/django 中接收和验证 WS-Federation 令牌?

聊聊WS-Federation

聊聊WS-Federation

Azure AD B2C OpenID使用WS-Federation和SAML声明提供程序连接单一注销

聊聊WS-Federation(test)