.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.Authority
和options.TokenValidationParameters
的ValidIssuer
有什么区别呢?他们有点像我;他们不是都指向JWT令牌的颁发者进行授权吗?我应该在我的其他 API 上使用一个而不是另一个 API,而不是我的身份验证 API?
感谢您为我提供的任何帮助!
【问题讨论】:
【参考方案1】:是的,这是您的例如身份验证配置的代码。 API
很可能它是一个 OAuth2 / OpenID Connect 端点,例如使用 Identity Server 4 实现的端点(尽管还有其他端点)。
是的,在大多数情况下它们是相同的。还有ValidIssuers
(多个)的选项。这些库使用Authority
属性连接到身份验证服务器并发现/.well-known/openid-configuration
。在网络设置的某些特殊情况下,您可能不想使用公共域,而是使用内部域或 IP 作为权限。在这种情况下(如果未另外配置),身份验证服务器仍将返回配置的/公共域作为颁发者。那么Authority
和ValidIssuer
会有所不同。只要您不需要/要求显式更改/修改这些值,它们在大多数情况下都是相同的。
【讨论】:
以上是关于.NET Core - 使用具有专用身份验证 API 的多个身份验证方案 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET Core 2.1 cookie 身份验证似乎具有服务器关联性
ASP.NET Core 中的混合身份验证(Windows 和 AAD JwtBearer)
从 Xamarin 对 Asp.NET CORE Web 应用程序进行身份验证