【发布时间】:2019-06-12 08:11:36
【问题描述】:
我正在尝试实现多租户身份验证(我正在学习),到目前为止,我已经成功地在单租户中实现了我的应用程序的身份验证。
我用于单租户的代码是
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,然后将其放入我的配置中。一切正常。
但现在我必须使用多租户类型来实现它。即使它是多租户的,我也只允许 2 个租户用户。假设abc.onmicrosoft.com 和contoso.onmicrosoft.com
到目前为止,我已经完成了在ABC 租户和Contoso 租户中注册我的应用程序,然后获得 2 个客户端 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
},
});
}
P.S 这对我来说是新的。我可能错了,请纠正我以使事情走上正确的道路
更新 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,以便仅对来自我的两个租户的用户进行身份验证!
【问题讨论】:
标签: .net azure authentication multi-tenant openid-connect