【发布时间】:2019-10-07 05:13:18
【问题描述】:
我正在尝试将 ASP.Net Core 2.2 与 OAuth 身份验证一起使用。要使用 OAuth,我在 Startup.cs 中的 public void ConfigureServices(IServiceCollection services) 中使用 AddOAuth 方法:
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = "Provider";
})
.AddCookie()
.AddOAuth("Provider", options =>
{
options.ClientId = Configuration["Provider:ClientId"];
options.ClientSecret = Configuration["Provider:ClientSecret"];
options.CallbackPath = new PathString("/callback");
options.AuthorizationEndpoint = "https://api.provider.net/auth/code";
options.TokenEndpoint = "https://api.provider.net/auth/token";
});
问题是,当中间件尝试使用TokenEndpoint 获取授权码时,我收到了 HTTP 401,因为提供者希望在此端点有一个基本的身份验证标头。
我的问题是,我如何告诉中间件向 TokenEndpoint 请求添加基本的身份验证标头?
【问题讨论】:
-
我认为这个问题足够相似,可以指导您找到解决方案:stackoverflow.com/questions/52994176/…。
-
这个问题今天依然存在。这很奇怪,因为根据规范,对 client_id/client_credential 身份验证的授权服务器支持是可选的:tools.ietf.org/html/rfc6749#section-2.3
标签: c# asp.net-core oauth-2.0