0

У меня есть один облачный центр для арендаторов, которым я хочу быть доступным только для сотрудников моей компании. Решение имеет роль в Интернете и роль рабочего.Конфигурирование облачного центра для аутентификации с помощью 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. Я не изменил или не отредактировал манифест. enter image description here enter image description here

Когда я пытаюсь войти в облачный сервис, я перенаправлены на моей странице организации входа в систему (все хорошо до сих пор), но после ввода пароля я встретил мое сообщение об ошибке.

У нас возникли проблемы с входом в систему. Мы получили незаконный запрос. (Свободно переведены)

корреляции 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

Я был бы очень признателен за любую помощь по этому вопросу

ответ

0

Turnes я должен отредактировать свой манифест в регистрации Azure Active Directory App:

"requiredResourceAccess": [ 
    { 
     "resourceAppId": "00000002-0000-0000-c000-000000000000", 
     "resourceAccess": [ 
     { 
      "id": "311a71xxxx-xxxx-xxxx-xxxx7156d8e6", 
      "type": "Scope" 
     }, 
     { 
      "id": "5778995axxxx-xxxx-xxx-xxxx63a9f3f4d04", 
      "type": "Role" 
     } 

Когда я удалил последнюю запись (роль, возможно, роль рабочего), я получил приглашение на экран, если я хочу предоставить права на чтение приложения для моего профиля Azure AD. После ответа OK я был направлен на локальном хосте: 44322 с 404. Решение, которое должно было извлечь ключ postLogoutRedirectUri из конфигурационных файлов, а также удалить две строки в Startup.Auth.cs

//PostLogoutRedirectUri = postLogoutRedirectUri, 
//RedirectUri = postLogoutRedirectUri, 

Теперь он работает по назначению :)

Смежные вопросы