Asp.net核心授权用户使用Policy

时间:2016-02-26 06:33:21

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

我正在尝试授权用户从请求标头发送不记名令牌。 我在资源服务器的启动文件中添加了这段代码。

services.AddAuthorization(auth =>
{
   auth.AddPolicy("Bearer", new AuthorizationPolicyBuilder()                        
  .AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme)
  .RequireAuthenticatedUser().Build());
});

这是我在控制器中的方法。

[Authorize("Bearer")]
[HttpGet]
[Route("list")]
public IEnumerable<Products> List()
{
    string Authorization = Request.Headers["Authorization"];
}

应用程序显示错误401未经授权即使我有令牌

我在标头请求中发送此令牌

授权:持票人&#34; xyz&#34;

1 个答案:

答案 0 :(得分:0)

要使用Bearer令牌,您必须在Configure方法

上添加以下代码
public void Configure(IApplicationBuilder app) {
    app.UseJwtBearerAuthentication(options => {
        options.AutomaticAuthenticate = true;
        options.AutomaticChallenge = true;
        options.Audience = "OAuth:Audience";
        options.Authority = "OAuth:Authority";
        options.ConfigurationManager = new ConfigurationManager<OpenIdConnectConfiguration>(
            metadataAddress: options.Authority + ".well-known/openid-configuration",
            configRetriever: new OpenIdConnectConfigurationRetriever(),
            docRetriever: new HttpDocumentRetriever() { RequireHttps = false });
    });
}

您还需要一个中间件来处理授权过程。 请查看AspNet.Security.OpenIdConnect.ServerOpenIddict