Jwt ASP.NET 5 OAuthBeareAuthentication:未接受以下身份验证方案:承载 更新:

Jwt ASP.NET 5 OAuthBeareAuthentication:未接受以下身份验证方案:承载 更新:,jwt,asp.net-core-mvc,Jwt,Asp.net Core Mvc,Pinpoint帮助我将这个原型从发射台上取下-我非常接近,除了: 我需要按照升级到beta6 SDK。Global.json现在显示如下: { “项目”:[“src”,“测试”], “sdk”:{ “版本”:“1.0.0-beta6” } } 我更新了project.json中的引用: { “webroot”:“wwwroot”, “版本”:“1.0.0-*”, “依赖项”:{ “Microsoft.AspNet.Mvc”:“6.0.0-beta6”, “Microsoft.AspN

Pinpoint帮助我将这个原型从发射台上取下-我非常接近,除了:

  • 我需要按照升级到beta6 SDK。Global.json现在显示如下:
{
“项目”:[“src”,“测试”],
“sdk”:{
“版本”:“1.0.0-beta6”
}
}
  • 我更新了project.json中的引用:
{
“webroot”:“wwwroot”,
“版本”:“1.0.0-*”,
“依赖项”:{
“Microsoft.AspNet.Mvc”:“6.0.0-beta6”,
“Microsoft.AspNet.Server.IIS”:“1.0.0-beta6”,
“Microsoft.AspNet.Server.WebListener”:“1.0.0-beta6”,
“Microsoft.AspNet.StaticFiles”:“1.0.0-beta6”,
“System.IdentityModel.Tokens”:“5.0.0-beta6-20721625”,
“Serilog.Framework.Logging”:“1.0.0-beta-43”,
“Microsoft.AspNet.Authentication.OAuthBearer”:“1.0.0-beta6”
},
“命令”:{
“web”:“Microsoft.AspNet.Hosting--config Hosting.ini”
},
“框架”:{
“dnx451”:{}
},
“排除”:[
“wwwroot”,
“节点_模块”,
“bower_组件”
],
“发布除外”:[
“节点_模块”,
“bower_组件”,
“**.xproj”,
“**.用户”,
“**.vspscc”
]
}
  • startup的Configure方法中的中间件顺序很重要。UseAuthBeareAuthentication需要在UseMvc之前进行。Startup.cs中的Configure方法现在显示如下:
public void配置(IApplicationBuilder应用程序,IHostingEnvironment环境)
{
app.useAuthBeareAuthentication();
app.UseMvc();
}

我正在使用ASP.NET5,并试图实现一个非常简单的概念证明,用于生成和使用JWT令牌。我读过这些文章,但最符合我的需要

为此,我非常仔细地阅读了这篇文章,重新阅读,将所有评论内化,然后举了一个简单的例子。我现在可以生成一个JWT令牌,但当我尝试调用我的控制器操作时,我收到以下消息,该操作已被authorize属性[authorize(“Bearer”)]修饰:

未接受以下身份验证方案:承载

因为我没有看到一个高保真的A.to Z示例,关于如何做到这一点,考虑下面的步骤来再现:

  • 通过选择“新建项目…Web…ASP.NET Web应用程序”,然后选择“ASP.NET 5预览模板”下的“Web API”选项,在Visual Studio 2015(我使用的是Enterprise)中创建一个新的Web API项目
  • 使用beta 5 SDK,global.json如下所示:
{
“项目”:[“src”,“测试”],
“sdk”:{
“版本”:“1.0.0-beta5”,
“运行时”:“clr”,
“体系结构”:“x86”
}
}
  • project.json引入了JWT令牌所需的依赖项,如下所示:
{
“webroot”:“wwwroot”,
“版本”:“1.0.0-*”,
“依赖项”:{
“Microsoft.AspNet.Mvc”:“6.0.0-beta6”,
“Microsoft.AspNet.Server.IIS”:“1.0.0-beta6”,
“Microsoft.AspNet.Server.WebListener”:“1.0.0-beta6”,
“System.IdentityModel.Tokens”:“5.0.0-beta5-206011020”,
“Microsoft.AspNet.Authentication.OAuthBearer”:“1.0.0-beta5”
},
“命令”:{
“web”:“Microsoft.AspNet.Hosting--config Hosting.ini”
},
“框架”:{
“dnx451”:{}
},
“排除”:[
“wwwroot”,
“节点_模块”,
“bower_组件”
],
“发布除外”:[
“节点_模块”,
“bower_组件”,
“**.xproj”,
“**.用户”,
“**.vspscc”
]
}
  • Startup.cs(这是一个不适用于生产的示例)
公共类启动
{
const string_TokenIssuer=“contoso.com”;
const string_tokenacademy=“contoso.com/resources”;
RsaSecurityKey _key=null;
SigningCredentials _SigningCredentials=null;
公共启动(IHostingEnvironment环境)
{
GeneratorSakeys();
}
public void配置服务(IServiceCollection服务)
{
服务。附加服务(签名凭证);
services.configureOAuthBeareAuthentication
(
选项=>
{
options.AutomaticAuthentication=true;
options.TokenValidationParameters.IssuerSigningKey=\u key;
options.TokenValidationParameters.Validudience=\u TokenAudience;
options.TokenValidationParameters.ValidisUser=\u TokenIssuer;
}
);
服务.配置授权
(
选项=>
{
选项。
添加策略
(
“持票人”,
新建AuthorizationPolicyBuilder()。
AddAuthenticationSchemes(OAuthBeareAuthenticationDefaults.AuthenticationScheme)。
RequireAuthenticatedUser()。
构建()
);
}
);
services.AddMvc();
}
公共void配置(IApplicationBuilder应用程序、IHostingEnvironment环境、iLogger工厂)
{
app.UseMvc();
app.useAuthBeareAuthentication();
}
void GenerateRsaKeys()
{
使用(RSACryptoServiceProvider rsa=新的RSACryptoServiceProvider(2048))
{
_key=新的RsaSecurityKey(rsa.ExportParameters(true));
_签名凭据=
新的签约证书
(
_钥匙,
SecurityAlgorithms.rsasA256签名,
SecurityAlgorithms.sha256摘要,
“秘密”
);
rsa.PersistKeyInCsp=false;
}
}
}
  • 一些型号:
证书.cs
public class Startup {
    public void Configure(IApplicationBuilder app) {
        app.UseJwtBearerAuthentication(new JwtBearerOptions {
            // Your JWT bearer options.
        });

        app.UseMvc();
    }
}