使用ASP.Net 5进行JwtBearerAuthentication

时间:2015-12-12 22:46:53

标签: c# asp.net-mvc asp.net-core asp.net-core-mvc

自从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试图帮助我并告诉我

  

"您必须添加对Microsoft.AspNet.Http.Abstractions的引用"

这样做根本没有用。我找到了其他答案,建议添加对Microsoft.AspNet.Authentication.OAuthBearer的引用,也没有运气。

我找到了另一个答案,建议尝试这样:

services.Configure<OAuthBearerAuthenticationOptions>(bearer =>
{
    bearer.TokenValidationParameters.IssuerSigningKey = key;
    bearer.TokenValidationParameters.ValidAudience = TokenAudience;
    bearer.TokenValidationParameters.ValidIssuer = TokenIssuer;
});

问题在于我不知道如何为SecureKey

创建IssuerSigningKey

有没有其他人成功使用最新版本的Asp.net 5 fc1-final?

更新

我发现的几乎所有示例都是针对自己创建和验证jwt令牌的应用程序。在我的情况下,我使用Thinktecture服务器来验证令牌。这就是为什么我需要audienceissuer以及为什么我有点失去了尝试创建RsaKey的原因。因为密钥不能仅仅是我在XML文件中本地创建的密钥,所以需要在Thinktecture服务器上将其作为受信任的应用程序进行身份验证

2 个答案:

答案 0 :(得分:1)

Microsoft.AspNet.Authentication.OAuthBearer已重命名为JwtBearer。 https://github.com/aspnet/Announcements/issues/87

答案 1 :(得分:1)

在rc-1版本中,我的问题没有解决方案。从这里发布另一个问题我得知这已经通过rs-2更新解决了。

如果你需要在2月2日的官方发布之前更新rs-2,你可以运行dvnm update -u来获取rc-2的最新夜间版本