C# 如何使用单个.NET核心web应用程序实例中的动态租户对Azure Active Directory中的用户进行身份验证?
我已经创建了.NETCore2.1Web应用程序。之后,此应用程序与Azure Active Directory集成(C# 如何使用单个.NET核心web应用程序实例中的动态租户对Azure Active Directory中的用户进行身份验证?,c#,azure,asp.net-core,.net-core,active-directory,C#,Azure,Asp.net Core,.net Core,Active Directory,我已经创建了.NETCore2.1Web应用程序。之后,此应用程序与Azure Active Directory集成(Microsoft.AspNetCore.Authentication.AzureAD)。在我的active directory中有几个租户,为了对用户进行身份验证,需要提供AD租户id、AD应用程序客户端id 有没有办法在我的Active Directory中使用所有租户进行身份验证 public class Startup { // Generated code
Microsoft.AspNetCore.Authentication.AzureAD
)。在我的active directory中有几个租户,为了对用户进行身份验证,需要提供AD租户id、AD应用程序客户端id
有没有办法在我的Active Directory中使用所有租户进行身份验证
public class Startup
{
// Generated code
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
.AddAzureAD(options =>
Configuration.Bind("AzureAd", options));
services.Configure<OpenIdConnectOptions>
(AzureADDefaults.OpenIdScheme, options =>
{
// OnTicketReceived, OnAuthenticationFailed, OnTokenValidated
})
}
// Generated code
}
对于多租户应用程序,应用程序不知道用户来自哪个租户,因此我们无法向租户的端点发送请求。要从AD获取令牌,所有请求都将转到/common端点() 当Azure AD在/common端点上收到请求时,它会将用户登录并发现该用户来自哪个租户。/common端点不对应于租户,也不是颁发者,当我们检查/common元数据中的颁发者值时,它有一个模板URL而不是实际值: 发行人: 因此,多租户应用程序无法仅通过将元数据中的issuer值与令牌中的issuer值进行匹配来验证令牌。多租户应用程序需要逻辑来决定哪些发卡机构值有效,哪些不基于发卡机构值的租户ID部分 例如,如果多租户应用程序只允许已注册其服务的特定租户登录,则它必须检查令牌中的颁发者值或租户声明值,以确保租户在其订户列表中 有关在多租户中验证用户的更多信息,请查看以下文档。 和 我希望这有帮助
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com",
"Domain": "some-domain.com",
"TenantId": "1a10b000-*******",
"ClientId": "15a0421d-*******",
"CallbackPath": "/signin-oidc"
}
}