Перенаправление проверки подлинности Azure на нежелательный URL-адрес

#azure #webforms #azure-active-directory #azure-authentication

#azure #веб-формы #azure-active-directory #azure-аутентификация

Вопрос:

Я создаю аутентификацию Azure AD, допустим, мой URL-адрес приложения https://hostname/applicationName/Default.aspx таков, что после нажатия этого URL-адреса пользователь перенаправляется на Azure login. Проблема в том, что даже если пользователь не входит в группу AD, он все равно перенаправляется на страницу приложения по умолчанию, а не выдает недопустимое сообщение пользователя.

Может кто-нибудь сообщить мне, где искать, ниже приведен фрагмент кода, который я использую в app startup.cs:

     private static string clientId = ConfigurationManager.AppSettings["ClientId"];
    private static string aadInstance = EnsureTrailingSlash(ConfigurationManager.AppSettings["Authority"]);
    private static string tenantId = ConfigurationManager.AppSettings["Tenant"];
    private static string postLogoutRedirectUri = ConfigurationManager.AppSettings["redirectUri"];

    string authority = aadInstance   tenantId;


    public void Configuration(IAppBuilder app)
    {
        app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
        app.UseKentorOwinCookieSaver();
        app.UseCookieAuthentication(new CookieAuthenticationOptions());
        app.UseOpenIdConnectAuthentication(
            new OpenIdConnectAuthenticationOptions
            {
        ClientId = clientId,
                Authority = authority,
                RedirectUri = postLogoutRedirectUri,
        PostLogoutRedirectUri = postLogoutRedirectUri,
                Scope = OpenIdConnectScope.OpenIdProfile,
        ResponseType = OpenIdConnectResponseType.IdToken,
        TokenValidationParameters = new TokenValidationParameters()
                {
                    ValidateIssuer = true 
        },
        Notifications = new OpenIdConnectAuthenticationNotifications
                {
                    AuthenticationFailed = OnAuthenticationFailed
                }
            }
        );
    }
 

Перенаправление в моем файле web.config https://hostname/applicationName/Default.aspx

На моей домашней странице приложения у меня есть следующий код в Page_Load()

         if (!Page.IsPostBack)
        {

            if (!Request.IsAuthenticated)
            {
                HttpContext.Current.GetOwinContext().Authentication.Challenge(
                    new AuthenticationProperties { RedirectUri = ConfigurationManager.AppSettings["redirectUri"] }, 
                    OpenIdConnectAuthenticationDefaults.AuthenticationType);
// Is this RedirectUri property correct?
            }
            //Application code
       }
 

Я установил следующее в startup.cs

 TokenValidationParameters = new TokenValidationParameters()
            {
                   ValidateIssuer = true 
            }
 

Дайте мне знать, если потребуются какие-либо дополнительные данные.

Ответ №1:

Согласно вашему описанию «если пользователь не является частью группы AD, он все равно перенаправляется на страницу приложения по умолчанию», я предположил, что вы можете установить значение «ConfigurationManager».Настройки приложений [«Арендатор»];’ как ‘общие’.

Я тестировал на своем месте, и когда я установил идентификатор клиента моей организации, я не могу войти в систему с помощью внешнего пользователя. И со значением «общий» это означает, что любые пользователи могут получить доступ к приложению, чтобы я мог успешно войти в систему с учетной записью пользователя, которую сейчас нельзя использовать для входа в систему.

Пожалуйста, дайте мне знать, если это не сработает.

введите описание изображения здесь

Ответ №2:

У вас есть несколько вариантов в зависимости от сценария, которого вы пытаетесь достичь.

Если вы хотите, чтобы пользователи, не входящие в ваш клиент Azure AD, не могли входить в систему, тогда вы должны убедиться, что свойство клиента не является «общим», а вашим собственным идентификатором клиента, который вы можете получить с портала Azure, как показано ниже введите описание изображения здесь

Если вы хотите добиться более сложного процесса групповой аутентификации, вы можете обратиться к этому образцу от Microsoft для получения всех подробностей