Я пытался реализовать Multitenant Authentication (которую я изучаю), и до сих пор мне удалось реализовать аутентификацию моего приложения в режиме Single tenant.
Код, который я использовал для одного арендатора:
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 и получаю идентификатор клиента, затем помещаю его в мою конфигурацию. Все отлично работает.
Но теперь я должен реализовать это с мультитенантным типом. Несмотря на то, что это мультитенант, я должен разрешить только 2 арендатора. Допустим, abc.onmicrosoft.com
и contoso.onmicrosoft.com
До сих пор я делал все возможное, чтобы зарегистрировать свое приложение в ABC
tenant и Contoso
tenant, а затем получил 2 идентификатора клиента. Но моя проблема заключается в том, что невозможно указать 2 идентификатора клиента в UseOpenIdConnectAuthentication
(см. Мой обновленный код ниже)
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'
Я не уверен, как дать два идентификатора клиента и идентификатор клиента, чтобы аутентифицировать пользователей только из двух моих клиентов!