.net core 当已知配置不可用时,在.net core中配置.AddJwtBearer/.AddAuthentication

.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“ 进行

我觉得我已经到了使用Discord(oauth2)进行身份验证的最后一步

我得到了一个AuthCode,用它交换了一个访问令牌,并通过
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计划