Невозможна аутентификация - веб-приложение Azure с Azure Active Directory (OpenIdConnect)

Я создал веб-приложение на лазурном языке и использую проверку подлинности Azure AD (OpenID-Connect) для проверки подлинности своего веб-приложения. но я не мог аутентифицировать веб-приложение на нескольких машинах.

На некоторых машинах он (аутентификация AAD) работает в Google Chrome, а не в IE, Edge, Firefox. несколько раз он работал во всех браузерах.

Я не смог выполнить следующие шаги

  1. Удалены все файлы cookie и претензии
  2. Очистить сеанс и протестировать в приватном режиме

В Startup.cs

public void ConfigureAuth(IAppBuilder app)
{
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

app.UseCookieAuthentication(new CookieAuthenticationOptions());

app.UseOpenIdConnectAuthentication(
                new OpenIdConnectAuthenticationOptions
                {
                    ClientId = Config.ClientId,
                    ClientSecret = Config.ClientSecret,
                    Authority = Config.Authority,
                    PostLogoutRedirectUri = Config.PostLogoutRedirectUri, 
                    RedirectUri = Config.PostLogoutRedirectUri,  
                    Notifications = new OpenIdConnectAuthenticationNotifications()
                    { 
                    }
                });
}

Когда я попытался войти в систему с помощью Azure AAD. Я получил сообщение об ошибке: «Нам не удалось войти в систему. Повторите попытку».

Информация:

Нет ошибки Войти в консоль браузера

URL-адрес: ** https://login.microsoftonline.com/TENANTID/oauth2/authorize?client_id=CLIENTID&redirect_uri=URL&response_mode=form_post&response_type=code%20id_token&scope=openid%20profile&state-client.Openid%20profile&stateclient.Openid%=ID_NET461&x-client-ver=5.5.0.0 **

Включена лазерная аутентификация / авторизация.


person Karthikeyan    schedule 19.08.2019    source источник
comment
Вы проверили консоль браузера? Вы проверили URL-адрес, сгенерированный, когда он вызывает ошибку? Вы проверили журнал веб-приложений? У вас есть двухфакторная аутентификация? У вас один и тот же адрес электронной почты для личного и рабочего аккаунтов? Вы за прокси? Вы пробовали с почтальоном? Пожалуйста, обновите свой вопрос, указав более подробную информацию.   -  person Max    schedule 19.08.2019
comment
@Max Проверяли ли вы консоль браузера? ** Да, ошибок нет ** Проверяли ли вы URL-адрес, сгенерированный, когда он вызывает ошибку? ** URL-адрес: ** Проверяли ли вы журнал веб-приложений? в APP Insights нет журнала. Была ли у вас двухфакторная аутентификация Включена ли лазерная аутентификация / авторизация?   -  person Karthikeyan    schedule 19.08.2019
comment
У вас один и тот же адрес электронной почты для личной и рабочей учетных записей? ** AD принадлежит Work A / C ** Вы находитесь за прокси-сервером? ** Нет ** Вы пробовали использовать почтальон? ** Это веб-приложение **   -  person Karthikeyan    schedule 19.08.2019
comment
Если в вашем приложении используется промежуточное ПО openid connect, вам не нужна функция authentication/authorization, просто отключите ее.   -  person Nan Yu    schedule 20.08.2019
comment
Я отключил функцию аутентификации / авторизации. и я получаю следующую ошибку IDX21323: RequireNonce is '[PII скрыт. Для получения дополнительных сведений см. aka.ms/IdentityModel/PII.] '. OpenIdConnectProtocolValidationContext.Nonce был пустым, OpenIdConnectProtocol.ValidatedIdToken.Payload.Nonce не был пустым. Одноразовый номер не может быть подтвержден. Если вам не нужно проверять одноразовый номер, установите для OpenIdConnectProtocolValidator.RequireNonce значение false. Обратите внимание, что если найден одноразовый номер, он будет оценен.   -  person Karthikeyan    schedule 21.08.2019
comment
Согласны ли вы с политикой использования файлов cookie? если все еще не работает, попробуйте образец кода: github.com/Azure-Samples/   -  person Nan Yu    schedule 22.08.2019
comment
Я использую стандартную структуру .Net. поэтому я не могу добавить согласие   -  person Karthikeyan    schedule 23.08.2019


Ответы (3)


Проблема: работает в Google Chrome, а не в IE, Edge, Firefox, Safari. несколько раз он работал во всех браузерах.

КАК РАЗРЕШИТЬ ЭТУ ПРОБЛЕМУ. Проблема устранена в ядре ASP.NET. Чтобы решить эту проблему, вы можете обновить свое приложение для использования ASP.NET Core. Если вам необходимо постоянно оставаться на ASP.NET, выполните следующие действия: обновите пакет Microsoft.Owin.Host.SystemWeb вашего приложения до версии не ниже версии и измените свой код, чтобы использовать один из новых классов диспетчера файлов cookie, например что-то вроде следующего:

app.UseCookieAuthentication(new CookieAuthenticationOptions 
{ 
    AuthenticationType = "Cookies", 
    CookieManager = new Microsoft.Owin.Host.SystemWeb.SystemWebChunkingCookieManager() 
});

Ссылка

person shubham mahore    schedule 29.03.2020

После некоторого исследования я обнаружил, что вам нужно использовать HTTPS, а также написать этот фрагмент кода в файле Startup.cs:

using Microsoft.Owin.Host.SystemWeb;


public void ConfigureAuth(IAppBuilder app)
{
    app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

    app.UseCookieAuthentication(new CookieAuthenticationOptions {
                CookieManager = new SystemWebCookieManager()
    });
...

Если вы используете приложение Azure, выполните следующие действия, чтобы приложение всегда использовало https:

  1. Войдите на портал Azure.

  2. Перейдите в Службы приложений.

  3. Щелкните приложение, о котором было сообщено.

  4. В разделе «Настройки» нажмите «Настройки TLS / SSL».

  5. В «Настройках протокола» установите для «Только HTTPS» значение «Вкл.».

person JD - DC TECH    schedule 27.07.2020

Я столкнулся с тем же сообщением об ошибке. Но в моем случае я увидел в консоли множество вызовов моего приложения / signin-oidc (302).

Проблема заключалась в том, что я удалил из метода ConfigureServices следующую строку:

services.Configure<CookiePolicyOptions>(options =>
            {
                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                options.CheckConsentNeeded = context => true;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });

После замены все заработало нормально.

HTH, J.

person Buildinghouse    schedule 20.08.2019