【问题标题】:Unable Authenticate - Azure web app with Azure Active Directory (OpenIdConnect)无法验证 - 带有 Azure Active Directory (OpenIdConnect) 的 Azure Web 应用
【发布时间】:2019-12-24 11:13:54
【问题描述】:

我在 azure 中创建了一个 Web 应用程序,并且我正在使用 Azure AD 身份验证 (OpenID-Connect) 来验证我的 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 登录时。我收到类似“我们无法让您登录。请重试”之类的错误消息。

信息:

没有错误登录浏览器控制台

网址:**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 身份验证/授权

【问题讨论】:

  • 你检查过浏览器控制台吗?您是否检查过引发错误时生成的 url?你检查过 webapp 日志吗?你有两因素身份验证吗?您的个人帐户和工作帐户的电子邮件地址是否相同?你在代理后面?你试过邮递员吗?请更新您的问题并提供更多详细信息。
  • @Max 你检查过浏览器控制台吗?**是的,没有错误**你检查过引发错误时生成的 url 吗?** URL 是 login.microsoftonline.com/TENANTID/oauth2/…** 你检查过吗网络应用日志? 在 APP Insights 中没有日志存在您是否进行了双重身份验证启用了 azure 身份验证/授权
  • 您的个人帐户和工作帐户的电子邮件地址是否相同?**AD 属于 Work A/C** 您在代理后面?**没有**您是否尝试过使用邮递员? **这是网络应用程序**
  • 如果在您的应用程序中使用 openid 连接中间件,您不需要 authentication/authorization 功能,只需禁用它即可。
  • 我已禁用身份验证/授权功能。我收到以下错误 IDX21323: RequireNonce is '[PII is hidden。有关详细信息,请参阅aka.ms/IdentityModel/PII.]'。 OpenIdConnectProtocolValidationContext.Nonce 为空,OpenIdConnectProtocol.ValidatedIdToken.Payload.Nonce 不为空。无法验证随机数。如果您不需要检查 nonce,请将 OpenIdConnectProtocolValidator.RequireNonce 设置为“false”。请注意,如果找到“nonce”,则会对其进行评估。

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


【解决方案1】:

问题:在 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() 
});

Reference Link

【讨论】:

    【解决方案2】:

    经过一番研究,我发现你需要使用HTTPS,并且在de 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. 点击被举报的App。

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-05-06
        • 1970-01-01
        • 2015-12-17
        • 1970-01-01
        • 2015-11-15
        • 1970-01-01
        • 1970-01-01
        • 2017-09-05
        相关资源
        最近更新 更多