我想在使用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/