使用 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 服务器来验证令牌。这就是为什么我需要 audienceissuer 以及为什么我在尝试创建 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 的最新夜间构建