无法验证-具有Azure Active Directory(OpenIdConnect)的Azure Web应用

时间:2019-08-19 08:46:17

标签: azure asp.net-core azure-active-directory openid-connect azure-webapps

我已经在azure中创建了一个Web应用程序,并且我正在使用Azure AD身份验证(OpenID-Connect)对我的Web应用程序进行身份验证。但是我无法在几台机器上对Web应用程序进行身份验证。

在某些计算机上,它(AAD身份验证)可以在谷歌浏览器中使用,而不能在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=OpenIdConnect.AuthenticationProperties%3TOKEN&x-client-SKU=ID_NET461&x-client-ver=5.5.0.0 **

启用了Azure身份验证/授权

3 个答案:

答案 0 :(得分:2)

问题:只能在谷歌浏览器中使用,而不能在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() 
});

Reference Link

答案 1 :(得分:1)

经过研究,我发现您需要使用 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 App,请按照以下步骤强制应用程序始终使用https:

  1. 登录到Azure门户。

  2. 导航到App Services。

  3. 单击报告的应用程序。

  4. 在“设置”部分,单击“ TLS / SSL设置”。

  5. 在“协议设置”中,将“仅HTTPS”设置为“开”。

答案 2 :(得分:0)

我遇到了相同的错误消息。但就我而言,我在控制台中看到了我的应用程序的/ 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。