.NET Core - 使用具有专用身份验证 API 的多个身份验证方案 [关闭]

Posted

技术标签:

【中文标题】.NET Core - 使用具有专用身份验证 API 的多个身份验证方案 [关闭]【英文标题】:.NET Core - Using multiple authentication schemes with a dedicated Authentication API [closed] 【发布时间】:2021-03-01 07:54:58 【问题描述】:

我正在尝试创建一个专用的身份验证 API,我的其他 API 在验证凭据时将引用该 API。根据这个link,我可以使用多种身份验证方案来做到这一点,方法是使用下面的类似代码:

public void ConfigureServices(IServiceCollection services)

    // Code omitted for brevity

    services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
        .AddJwtBearer(options =>
        
            options.Audience = "https://localhost:5000/";
            options.Authority = "https://localhost:5000/identity/";
        )
        .AddJwtBearer("AzureAD", options =>
        
            ...
        );

我对此有一些疑问:

    我猜这段代码会转到我的其他 API,options.Authority 必须更改为指向我的身份验证 API 端点的 URL,对吧? 如果 #1 是正确的,那么身份验证 API 的 identity 端点究竟应该是什么样子? 上面的代码中没有这个,但是options.Authorityoptions.TokenValidationParametersValidIssuer有什么区别呢?他们有点像我;他们不是都指向JWT令牌的颁发者进行授权吗?我应该在我的其他 API 上使用一个而不是另一个 API,而不是我的身份验证 API?

感谢您为我提供的任何帮助!

【问题讨论】:

【参考方案1】:

    是的,这是您的例如身份验证配置的代码。 API

    很可能它是一个 OAuth2 / OpenID Connect 端点,例如使用 Identity Server 4 实现的端点(尽管还有其他端点)。

    是的,在大多数情况下它们是相同的。还有ValidIssuers(多个)的选项。这些库使用Authority 属性连接到身份验证服务器并发现/.well-known/openid-configuration。在网络设置的某些特殊情况下,您可能不想使用公共域,而是使用内部域或 IP 作为权限。在这种情况下(如果未另外配置),身份验证服务器仍将返回配置的/公共域作为颁发者。那么AuthorityValidIssuer 会有所不同。只要您不需要/要求显式更改/修改这些值,它们在大多数情况下都是相同的。

【讨论】:

以上是关于.NET Core - 使用具有专用身份验证 API 的多个身份验证方案 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Core 2.1 cookie 身份验证似乎具有服务器关联性

ASP.NET Core 中的混合身份验证(Windows 和 AAD JwtBearer)

从 Xamarin 对 Asp.NET CORE Web 应用程序进行身份验证

带有 SPA 的 .NET Core WebApi 项目中的混合身份验证流程

ASP .NET Core 身份登录管理器

使用 .NET Core Web API 登录和注册