我正在尝试授权用户从请求标头发送不记名令牌。 我在资源服务器的启动文件中添加了这段代码。
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;
答案 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.Server和OpenIddict