【发布时间】:2014-04-07 17:40:45
【问题描述】:
我目前正在尝试使用以下技术组合为新应用创建基于声明的身份验证的概念证明:Web API 2、OWIN 中间件和 JWT。
为了简单起见,我从 Web API 2 项目模板开始,并将身份验证更改为“个人用户帐户”。然后,我创建的示例客户端能够通过调用 /Token 获取令牌,并且能够使用 OAuth 持有者令牌调用示例端点。到目前为止,一切都很好。然后我将以下代码添加到 Startup.Auth.cs 以尝试启用 JwtBearerAuthentication:
var jwtOptions = new JwtBearerAuthenticationOptions
{
AllowedAudiences = audiences,
IssuerSecurityTokenProviders = new[] {
new SymmetricKeyIssuerSecurityTokenProvider(issuer, signingKey) }
};
app.UseJwtBearerAuthentication(jwtOptions);
我预计 Web API 2 会开始从对 /Token 的调用中返回 JWT,但它似乎没有做任何事情。几天来我一直在努力解决这个问题,但没有成功,而且微软的文档也不是很及时。
我还尝试将以下内容添加到我的 OAuthAuthorizationServerOptions
AuthorizationCodeFormat = new JwtFormat(audience, new SymmetricKeyIssuerSecurityTokenProvider(issuer, signingKey))
我也可能试图做完全错误的事情。
任何想法都将不胜感激。
【问题讨论】:
-
我目前正在创建自己的 ISecureDataFormat
并将其分配给 AccessTokenFormat -
您是否找到了一种方法来更改为使用您自己的自定义 ISecureDataFormat 实现来发布 JWT?
-
你解决过这个问题吗?我现在开始考虑做同样的事情。
-
@ChrisC 是的。最终创建了一个基于 ISecureDataFormat
的自定义 AccessTokenFormat。取消保护方法类似于以下内容:katanaproject.codeplex.com/SourceControl/latest#src/…,我们实现了适当的保护方法。
标签: c# owin asp.net-web-api2 jwt