使用 ASP.Net 5 的 JwtBearer 身份验证
JwtBearerAuthentication with ASP.Net 5
自从 RC1 的最后一次更新以来,我无法让我的 MVC 应用程序能够读取和验证 jwt 令牌。我曾经在 Startup.cs
:
中有这样的工作代码
public void Configuration(IAppBuilder app)
{
app.UseJwtBearerAuthentication(new MyJwtOptions());
...
}
然后还有这个:
public MyJwtOptions()
{
var issuer = "https://issuer.com";
var audience = "https://www.audience.com";
var key = Convert.FromBase64String("secretKey");
AllowedAudiences = new[] {audience};
IssuerSecurityTokenProviders = new[] {new SymmetricKeyIssuerSecurityTokenProvider(issuer, key)};
}
错误来了:
app.UseJwtBearerAuthentication()
我到处搜索,试图找出为什么它不再与 DNX 4.5 和 DNX Core 5.0 兼容。 Intellisense 试图帮助我并告诉我
"You must add reference to Microsoft.AspNet.Http.Abstractions"
这样做一点帮助也没有。我发现其他答案建议添加对 Microsoft.AspNet.Authentication.OAuthBearer
的引用,但也没有运气。
我找到了另一个建议这样尝试的答案:
services.Configure<OAuthBearerAuthenticationOptions>(bearer =>
{
bearer.TokenValidationParameters.IssuerSigningKey = key;
bearer.TokenValidationParameters.ValidAudience = TokenAudience;
bearer.TokenValidationParameters.ValidIssuer = TokenIssuer;
});
问题是我不知道如何为 IssuerSigningKey
创建 SecureKey
有没有其他人成功使用最新版本的 Asp.net 5 fc1-final?
更新
我找到的几乎每个示例都适用于自行创建和验证 jwt 令牌的应用程序。在我的例子中,我使用 Thinktecture 服务器来验证令牌。这就是为什么我需要 audience
和 issuer
以及为什么我在尝试创建 RsaKey
时有点迷茫的原因。因为密钥不能只是我在 XML 文件中本地创建的东西,所以它需要在 Thinktecture 服务器上作为受信任的应用程序进行身份验证
Microsoft.AspNet.Authentication.OAuthBearer 已重命名为 JwtBearer。
https://github.com/aspnet/Announcements/issues/87
在 rc-1 版本中没有解决我的问题。通过在这里发布另一个问题,我了解到这已通过 rs-2 更新得到解决。
如果您需要在 16 年 2 月正式发布之前更新 rs-2,您可以运行dvnm update -u
获取 rc-2 的最新夜间构建
自从 RC1 的最后一次更新以来,我无法让我的 MVC 应用程序能够读取和验证 jwt 令牌。我曾经在 Startup.cs
:
public void Configuration(IAppBuilder app)
{
app.UseJwtBearerAuthentication(new MyJwtOptions());
...
}
然后还有这个:
public MyJwtOptions()
{
var issuer = "https://issuer.com";
var audience = "https://www.audience.com";
var key = Convert.FromBase64String("secretKey");
AllowedAudiences = new[] {audience};
IssuerSecurityTokenProviders = new[] {new SymmetricKeyIssuerSecurityTokenProvider(issuer, key)};
}
错误来了:
app.UseJwtBearerAuthentication()
我到处搜索,试图找出为什么它不再与 DNX 4.5 和 DNX Core 5.0 兼容。 Intellisense 试图帮助我并告诉我
"You must add reference to Microsoft.AspNet.Http.Abstractions"
这样做一点帮助也没有。我发现其他答案建议添加对 Microsoft.AspNet.Authentication.OAuthBearer
的引用,但也没有运气。
我找到了另一个建议这样尝试的答案:
services.Configure<OAuthBearerAuthenticationOptions>(bearer =>
{
bearer.TokenValidationParameters.IssuerSigningKey = key;
bearer.TokenValidationParameters.ValidAudience = TokenAudience;
bearer.TokenValidationParameters.ValidIssuer = TokenIssuer;
});
问题是我不知道如何为 IssuerSigningKey
SecureKey
有没有其他人成功使用最新版本的 Asp.net 5 fc1-final?
更新
我找到的几乎每个示例都适用于自行创建和验证 jwt 令牌的应用程序。在我的例子中,我使用 Thinktecture 服务器来验证令牌。这就是为什么我需要 audience
和 issuer
以及为什么我在尝试创建 RsaKey
时有点迷茫的原因。因为密钥不能只是我在 XML 文件中本地创建的东西,所以它需要在 Thinktecture 服务器上作为受信任的应用程序进行身份验证
Microsoft.AspNet.Authentication.OAuthBearer 已重命名为 JwtBearer。 https://github.com/aspnet/Announcements/issues/87
在 rc-1 版本中没有解决我的问题。通过在这里发布另一个问题,我了解到这已通过 rs-2 更新得到解决。
如果您需要在 16 年 2 月正式发布之前更新 rs-2,您可以运行dvnm update -u
获取 rc-2 的最新夜间构建