从自定义Sts获取JWT格式的令牌

时间:2013-07-03 14:04:59

标签: wif

我已经实现了一个自定义STS,它可以很好地使用Saml令牌。 现在我需要以JWT格式获取令牌,因为我需要稍后将其传递给基于WCF Rest的服务。 我从以下位置安装了Jwt Token Handler: https://nuget.org/packages/System.IdentityModel.Tokens.Jwt/

这是Sts项目中Web.config的一部分:

    

  <securityTokenHandlers name="ActAs">
    <clear/>
    <add type="System.IdentityModel.Tokens.JwtSecurityTokenHandler, System.IdentityModel.Tokens.Jwt"/>
    <!--<add type="System.IdentityModel.Tokens.SamlSecurityTokenHandler, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
    <add type="System.IdentityModel.Tokens.Saml2SecurityTokenHandler, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />-->

    <securityTokenHandlerConfiguration>
      <audienceUris>
        <add value="URL_RP_STS"/>
        <add value="URL_CLIENT"/>
      </audienceUris>
      <issuerNameRegistry type="System.IdentityModel.Tokens.ConfigurationBasedIssuerNameRegistry, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089">
        <trustedIssuers>
          <add thumbprint="..." name="StsCustom" />
        </trustedIssuers>
      </issuerNameRegistry>
    </securityTokenHandlerConfiguration>
  </securityTokenHandlers>

  <audienceUris>
    <add value="URL_RP_STS" />
  </audienceUris>
  <!--certificationValidationMode set to "None" by the the Identity and Access Tool for Visual Studio. For development purposes.-->
  <certificateValidation certificateValidationMode="None" />
  <issuerNameRegistry type="System.IdentityModel.Tokens.ValidatingIssuerNameRegistry, System.IdentityModel.Tokens.ValidatingIssuerNameRegistry">
    <authority name="StsCustom">
      <keys>
        <add thumbprint="..." />
      </keys>
      <validIssuers>
        <add name="StsCustom" />
      </validIssuers>
    </authority>
  </issuerNameRegistry>
</identityConfiguration>    

但是Sts继续生成一个SamlSecurityToken。 是否需要一些其他配置来设置特定的令牌类型?是不是在securityTokenHandlers部分添加Jwt令牌处理程序? 感谢

1 个答案:

答案 0 :(得分:0)

您如何申请令牌?在WS-Trust中,您可以在RST中传递令牌类型。对于WS-Federation,您需要在STS中编写代码。