我想在使用WIF 4.5的WebAPI应用程序中支持JWT(Json Web令牌)。

我正在使用System.IdentityModel.Tokens.Jwt 5.0.0 nuget程序包,该程序包的JWTSecurityTokenHandler似乎与WIF的较早版本集成在一起。

问题在于处理程序派生Microsoft.IdentityModel.Tokens.SecurityTokenHandler而不是config节所期望的从System.IdentityModel.Tokens.SecurityTokenHandler派生。

因此,我得到一个可以理解的异常:

Parser Error Message: ID1029: The custom type is not suitable because it does not extend the correct base class.
CustomType: 'System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler, System.IdentityModel.Tokens.Jwt, Version=5.0.0.127, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
BaseClass: 'System.IdentityModel.Tokens.SecurityTokenHandler'


我的配置如下:

<system.identityModel>
        <identityConfiguration>
            <audienceUris>
                <add value="http://localhost:49482/" />
            </audienceUris>
            <securityTokenHandlers>
                <add type="System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler, System.IdentityModel.Tokens.Jwt" />
                <securityTokenHandlerConfiguration>
                    <certificateValidation certificateValidationMode="PeerTrust" />
                </securityTokenHandlerConfiguration>
            </securityTokenHandlers>
        </identityConfiguration>
</system.identityModel>


如何在WIF 4.5上支持JWT?有什么办法可以使用此软件包吗?难道我做错了什么?

最佳答案

该程序包是根据.net标准1.4编写的,该标准不包含System.IdentityModel API,因此该程序包未与WIF集成。

如果要通过WIF配置使用System.IdentityModel,则基于https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/issues/94,您需要返回到该软件包的3.x版本。

您当然可以总是编写自己的System.IdentityModel.Tokens.SecurityTokenHandler实现,将Microsoft.IdentityModel.Tokens.SecurityTokenHandle换行

关于c# - 有什么方法可以在WIF 4.5上支持JWTSecurityTokenHandler?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40268743/

10-10 15:26