.net core 当已知配置不可用时,在.net core中配置.AddJwtBearer/.AddAuthentication
我觉得我已经到了使用Discord(oauth2)进行身份验证的最后一步 我得到了一个AuthCode,用它交换了一个访问令牌,并通过.net core 当已知配置不可用时,在.net core中配置.AddJwtBearer/.AddAuthentication,.net-core,oauth-2.0,discord,jwt-auth,.net Core,Oauth 2.0,Discord,Jwt Auth,我觉得我已经到了使用Discord(oauth2)进行身份验证的最后一步 我得到了一个AuthCode,用它交换了一个访问令牌,并通过fetch将它从我的客户端传递到我的.net核心api端点,该端点用[Authorize]属性修饰 在这一点上,我得到一个服务器错误。 System.InvalidOperationException:IDX20803:无法从以下位置获取配置:'https://discord.com/api/.well-known/openid-configuration“ 进行
fetch
将它从我的客户端传递到我的.net核心api端点,该端点用[Authorize]
属性修饰
在这一点上,我得到一个服务器错误。
System.InvalidOperationException:IDX20803:无法从以下位置获取配置:'https://discord.com/api/.well-known/openid-configuration“
进行一些研究,这是意料之中的,Discord并没有提供一个众所周知的配置端点
Discord尚未实现已知的配置端点,因此需要禁用“发现端点”字段并手动指定端点。这些字段的值为:
授权端点-
令牌端点-
用户信息端点-
来源
因此,我需要手动配置我的应用程序,以了解此配置将提供的所有信息
目前我有:
IdentityModelEventSource.ShowPII = true;
services.AddAuthentication(o =>
{
o.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
o.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
}).AddJwtBearer(o =>
{
o.Authority = "https://discord.com/api";
o.Audience = "mysite";
});
如何配置它所需的位并阻止它尝试查找已知的配置。
我在任何地方都找不到有关以下内容的文档:(
编辑:
所以我试图作弊,我创建了一个新的端点并伪造了一个众所周知的配置,如下所示:
[HttpGet()]
[Route("wellknown")]
public WellKnownConfig WellKnown()
{
return new WellKnownConfig();
}
public class WellKnownConfig
{
public string issuer => "https://discord.com/api";
public string authorization_endpoint => "https://discord.com/api/oauth2/authorize";
public string token_endpoint => "https://discord.com/api/oauth2/token";
public string userinfo_endpoint => "https://discord.com/api/users/@me";
public List<string> scopes_supported => new List<string>() { "connections", "email", "identify" };
public List<string> response_types_supported => new List<string>() { "code", "id_token", "refresh_token" };
}
.AddJwtBearer(o =>
{
o.Authority = "https://discord.com/api";
o.Audience = "mysite";
o.RequireHttpsMetadata = false;
o.MetadataAddress = "http://localhost:5000/api/auth/wellknown";
});
不幸的是,我现在得到了一个未经授权的401计划