我正在尝试实现多租户身份验证(我正在学习),到目前为止,我已经成功地在单个租户中实现了应用程序的身份验证。
我用于单个租户的代码是:
这里,我首先在ABC AAD中注册我的应用程序并获取客户端ID,然后将其放入我的配置中。一切正常。
但现在我必须使用多租户类型来实现这一点。即使它是多租户,我也只允许两个租户用户。假设是abc.onmicrosoft.com和contoso.onmicrosoft.com。
到目前为止,我已经在ABC租户和Contoso租户中注册了我的应用程序,然后获取了两个客户端ID。但我的问题是无法在UseOpenIdConnectAuthentication(请参见下面更新的代码)中提供2个客户端ID。
附言:这对我来说是新的。我可能错了,请纠正我以便把事情走在正确的轨道上。
更新1:
在注释掉ClientID后,我收到了以下错误:
AADSTS900144:请求正文必须包含以下参数:'client_id'
我不确定如何提供我的两个ClientID和租户ID,以便仅从我的两个租户对用户进行身份验证!
我用于单个租户的代码是:
public void ConfigureAuth(IAppBuilder app)
{
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions
{
ClientId = ConfigurationManager.AppSettings["AuthclientId"],
Authority = "https://login.microsoftonline.com/abc.onmicrosoft.com/",
});
}
这里,我首先在ABC AAD中注册我的应用程序并获取客户端ID,然后将其放入我的配置中。一切正常。
但现在我必须使用多租户类型来实现这一点。即使它是多租户,我也只允许两个租户用户。假设是abc.onmicrosoft.com和contoso.onmicrosoft.com。
到目前为止,我已经在ABC租户和Contoso租户中注册了我的应用程序,然后获取了两个客户端ID。但我的问题是无法在UseOpenIdConnectAuthentication(请参见下面更新的代码)中提供2个客户端ID。
public void ConfigureAuth(IAppBuilder app)
{
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions
{
ClientId = ??,
Authority = "https://login.microsoftonline.com/common/",
TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = false
},
});
}
附言:这对我来说是新的。我可能错了,请纠正我以便把事情走在正确的轨道上。
更新1:
app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions
{
//ClientId = authClientID1,//App ID registered with 1st Tenant
Authority = "https://login.microsoftonline.com/common/",
RedirectUri= "https://localhost:44376/",
TokenValidationParameters = new TokenValidationParameters
{
ValidAudiences = new List<string>{ authClientID1, authClientID2 },
ValidateIssuer =true,
ValidIssuers= new[] { "https://sts.windows.net/<tenantID1>/", "https://sts.windows.net/<tenantID2>/" }
},
});
在注释掉ClientID后,我收到了以下错误:
AADSTS900144:请求正文必须包含以下参数:'client_id'
我不确定如何提供我的两个ClientID和租户ID,以便仅从我的两个租户对用户进行身份验证!