У меня есть один облачный центр для арендаторов, которым я хочу быть доступным только для сотрудников моей компании. Решение имеет роль в Интернете и роль рабочего.Конфигурирование облачного центра для аутентификации с помощью Azure Active Directory
Web.Config
<add key="ida:Tenant" value="MyCompany.onmicrosoft.com" />
<add key="ida:Audience" value="https://MyCompany.onmicrosoft.com/MySolutionWebRole" />
<add key="ida:ClientID" value="44421xxx-xxxx-xxxx-xxxx-xxxxxxx7024" />
<add key="ida:Password" value="i6fMxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx4Yk=" />
<add key="ida:AADInstance" value="https://login.microsoftonline.com/{0}" />
<add key="ida:PostLogoutRedirectUri" value="https://localhost:44322/" />
Кроме того, я получил те же самые параметры в Cloud.config:
<Setting name="ida.Tenant" value="MyCompany.onmicrosoft.com" />
<Setting name="ida.Audience" value="https://MyCompany.onmicrosoft.com/MySolutionWebRole" />
<Setting name="ida.ClientID" vvalue="44421xxx-xxxx-xxxx-xxxx-xxxxxxx7024" />
<Setting name="ida.Password" value="i6fMxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx4Yk=" />
<Setting name="ida.AADInstance" value="https://login.microsoftonline.com/{0}" />
<Setting name="ida.PostLogoutRedirectUri" value="https://localhost:44322/" />
Moving на Startup.Auth.cs
public void ConfigureAuth(IAppBuilder app)
{
string authority = String.Format(CultureInfo.InvariantCulture, aadInstance, tenant);
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions
{
ClientId = clientId,
Authority = authority,
PostLogoutRedirectUri = postLogoutRedirectUri,
RedirectUri = postLogoutRedirectUri,
Notifications = new OpenIdConnectAuthenticationNotifications
{
AuthenticationFailed = context =>
{
context.HandleResponse();
context.Response.Redirect("/Error?message=" + context.Exception.Message);
return Task.FromResult(0);
}
}
});
}
Наконец, У меня есть тег [Authorize] в моем контроллере.
В настройке Active Directory Azure у меня зарегистрирован облачный сервис. Тип приложения - это веб-приложение/API, а Multi-tenanted - «Нет». Выходной URL-адрес установлен на https://localhost:44322/Account/EndSession. Я не изменил или не отредактировал манифест.
Когда я пытаюсь войти в облачный сервис, я перенаправлены на моей странице организации входа в систему (все хорошо до сих пор), но после ввода пароля я встретил мое сообщение об ошибке.
У нас возникли проблемы с входом в систему. Мы получили незаконный запрос. (Свободно переведены)
корреляции ID: 21f4089f-1952-4f57-aead-173a66c1408d Timestamp: 2016-09-26 10: 24: 14Z AADSTS90093: Это приложение требует разрешения приложения к другому приложению. Согласие на разрешение может быть выполнено только администратором. Выйти и войти в систему как администратор или связаться с одним из ваших администраторов организации .
Адрес для входа в систему выглядит следующим образом (sceen, где я вводил свой пароль);
https://login.microsoftonline.com/ fd2xxxxx-хххх-хххх-xxxxxxxf3f2/ oauth2/авторизацию? Client_id = 444xxxxx-хххх-хххх-xxxxxxxx024 & redirect_uri = HTTPS% 3a% 2f% 2flocalhost% 3a44322% 2f & response_mode = form_post & response_type = code + id_token & scope = openid + профиль & state = OpenIdConnect.AuthenticationProperties % 3dYkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Я смотрел на два примера решений, основанных на веб-приложений, найденных в https://github.com/Azure-Samples/active-directory-dotnet-webapp-openidconnect и https://github.com/Azure-Samples/active-directory-dotnet-webapp-multitenant-openidconnect
Я был бы очень признателен за любую помощь по этому вопросу