【问题标题】:ASP.net MVC Application having Nonce Problem in Subdirectory hosting in IISASP.net MVC 应用程序在 IIS 中的子目录托管中存在 Nonce 问题
【发布时间】:2021-11-16 22:50:37
【问题描述】:

ASP.net MVC 应用程序在 IIS 中的子目录托管中存在 Nonce 问题。我在 asp.net MVC 中有一个项目,我想在其中添加 Azure Active Directory 登录。

这在带有 Azure AD 的 localhost 中运行良好。但是当在虚拟机中托管此应用程序以及尝试访问此应用程序时。 显示错误“IDX21323: Require Nonce is '[PII is hidden]'。OpenIdConnectProtocolValidationContext.Nonce 为 null,OpenIdConnectProtocol.ValidatedIdToken.Payload.Nonce 不为 null。nonce 不能为已验证。如果您不需要检查 nonce,请将 OpenIdConnectProtocolValidator.RequireNonce 设置为 'false'。请注意,如果找到 'nonce',它将被评估。"

我已经在目录中托管了许多网站。 喜欢

  1. abc.mydominName.com/FirstProject
  2. abc.mydominName.com/second 项目
  3. abc.mydominName.com/ThirdProject
  4. abc.mydominName.com/FourthProject(我在这里发布并使用 URL 访问它:“abc.mydominName.com/FourthProject”)

【问题讨论】:

    标签: asp.net-mvc-4 azure-devops azure-active-directory iis-7 owin


    【解决方案1】:

    错误可能有多种原因:

    1. 首先,请检查您提供的域名是否正确并验证。
    2. 默认情况下,托管网站的 Visual Studio IIS Express 可能使用 http。检查这个并尝试使用https:
    3. 检查您的项目 URL 是否与 Azure 中的重定向 URI 不同 检查 AD 应用注册中的 URL --> 设置 --> 回复 URL。如果 url 是 https://localhost:44348/ ,那么 MVC 项目 url 也应该是 https://localhost:44348/
    4. 检查身份验证过程中涉及的 Cookie(包括 Nonce Cookie)是否应设置以下两个属性:SameSite=None 和安全。
    5. 如果您仅在 chrome 中遇到此问题,您可以尝试在 chrome 上设置“具有相同站点的 cookie 必须是安全的”标志以禁用。 如果没有任何效果,您可以跳过错误并通过在 openid 设置中使用以下内容来处理它。

       // skip IDX21323 exception
        if (context.Exception.Message.Contains("IDX21323"))
        {
           context.SkipToNextMiddleware();
        } else {
           context.HandleResponse();
           context.Response.Redirect("/Error?message=" + context.Exception.Message);
        }
        return Task.FromResult(0);

    参考资料:

    1. SO thread
    2. Problem related to nonce

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-02
      • 2011-08-29
      • 1970-01-01
      相关资源
      最近更新 更多