使用 loginPopup 时 Microsoft 身份验证反应“hash_empty_error”

2024-01-12

我无法理解在尝试使用 Micrsoft Authentication 库 for React (PWA) 对用户进行身份验证时遇到的错误。我需要帮助理解为什么尝试使用 loginPopup 方法登录用户时失败。

在某些情况下,身份验证按预期工作,但在某些情况下却不起作用。任何形式的建议和/或帮助将不胜感激。

以下是我配置 microsoft 身份验证库的方式:

// create the microsoft signin configuration object
const msalConfig = {
  auth: {
    clientId   : process.env.REACT_APP_APP_CLIENT_ID,
    authority  : "https://login.microsoftonline.com/common/",
    redirectUri: window.location.origin,
  },
  cache: {
    cacheLocation: "sessionStorage",
  }
};

// initialize the user egent of the application 
const msalInstance = new msal.PublicClientApplication(msalConfig);

这是我调用 loginPopup 方法的块,该方法应该返回一个承诺,该承诺在该函数完成时得到满足,或者在出现错误时被拒绝。

const handleMicrosoftSignin = async () => {
  try {
    // this function does not get fulfilled, hence a 'hash_empty-err' 
    let msalResponse = await msalInstance.loginPopup();
    console.log("MSAL POPUP-LOGIN RESPONSE:", msalResponse)

    authenticateWithMicrosoft(
      msalResponse.account.username,
      msalResponse.accessToken
    );
  } catch (err) {
    setSnackBar({
      open    : true,
      message : err.message,
    });
  }
}

以下是我尝试使用登录弹出方法登录时收到的错误:

BrowserAuthError: hash_empty_error: Hash value cannot be processed because it is empty. Please verify that your redirectUri is not clearing the hash. Given Url: http://localhost:3000/login

以下是我正在使用的包,如我的 package.json 依赖关系树中所定义:

"dependencies": {
    ...
    "@azure/msal-browser": "^2.14.1",
    "@azure/msal-react": "^1.0.0-beta.2",
    ...
}

造成这个调试困难的原因是它不可重复,我发现很难理解为什么这个错误会在随机时间出现。有时承诺会实现,但有时却不会。换句话说,它有效,也无效。

关于如何调试或解决此问题的帮助和/或建议将非常有价值并受到高度赞赏。预先感谢您的帮助。

免责声明: 我已经阅读了文档、Microsoft Msal 示例应用程序,我还阅读了大量教程,但仍然未能使其完全发挥作用。


请仔细检查您用作redirectUri 的页面是否未更改或清除网址的哈希值。 AAD 的响应在哈希中返回,清除此响应可能会导致这种间歇性行为,因为它会在应用程序逻辑和 MSAL 之间产生竞争条件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 loginPopup 时 Microsoft 身份验证反应“hash_empty_error” 的相关文章

随机推荐

  • 使用 HTTP PUT 通过 Jquery 和 Rails 3 发送 JSON

    HTTP PUT 并不完全跨浏览器 因此 Rails 我使用的是 Rails 3 支持使用 POST 并传递 method查询参数这很棒 但是在发送 JSON 时似乎不起作用 Example ajax url window location
  • 如何在 Bokeh (Python) 中绘制水平条形图

    我有这个数据 data Cities Des Moines 80 0 Lubbock 300 0 Minneapolis 85 7 Orange County 80 0 Salt Lake City 81 8 San Diego 80 0
  • Visual Studio 设计器不显示嵌入字体

    我在 Visual Studio 2013 的 C WPF NET 4 0 应用程序 特别是 Open Sans 和 FontAwesome 中使用一些自定义字体 I have 将 FontAwesome otf 和 OpenSans Re
  • 杰克逊 2.0 与球衣 1.12

    有人设法将 Jackson 2 0 与 Jersey 1 12 一起使用吗 知道这一点将会非常有趣 我们必须在所有地方使用 Jackson 1 9 x 只是因为 jersey 与 Jackson 的耦合如此紧密 据我所知 甚至 jersey
  • 我的 App Engine 控制面板中的数据存储区管理页面为空白

    我在 appspot com 上的所有应用程序中的数据存储管理页面都是空白的 我已按照说明启用它们 并且没有收到任何错误消息 只是加载了空白页面 有人可以帮忙吗 如果您使用的是 Google Chrome 并通过多个 Gmail 帐户登录
  • 模拟本地网络的低速连接

    有时我想手动测试我的 Web 应用程序 调用 Web 服务或网站或 RIA 的桌面应用程序 以查看它们在低速互联网连接 例如 56 kbps 下的行为方式 是否可以通过网络模拟比真实速度更低的速度来实现 如果是 是否也可以模拟低质量连接 例
  • 使用苹果的 auriotouch 示例计算频率

    我正在开发一个需要捕获吉他声音频率的程序 我修改了 aurioTouch 示例 以使用幅度最高的频率来输出频率 它适用于高音 但在低音弦上非常不准确 我相信这是由于泛音造成的 我研究了如何解决这个问题的方法 例如倒谱分析 但我不知道如何在示
  • 是否可以在同一个 Django 项目中拥有单独的 SQLite 数据库?

    我正在考虑为 Django 项目上的某些应用程序创建一个单独的 SQLite 数据库 但是 如果可能的话 我不想使用直接 SQLite 访问 对这些数据库的 Django 风格 ORM 访问将是理想的选择 这可能吗 谢谢 是的 低级 API
  • 从 swift 调用 Objective-C typedef 块

    我正在尝试从 swift 调用一个方法 该方法是用 Objective C 编写的单例 头文件中的块 typedef void VPersonResultBlock Person person NSError error void askF
  • 为什么 Swift 中的协议比类更好? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 通过观看Apple提供的视频教程 似乎swift是面向协议的编程语言 并且Apple鼓励程序员使用协议而不是类 但从我个人的角度来看 我认为协议
  • Magento 购物车 API 不显示价格

    我正在尝试使用 Magento Enterprise 1 10 XML RPC API 来处理 Magento 安装之外的购物车 目录功能 我遇到的问题是当我添加到购物车时 我可以很好地连接到 API 端点 登录并检索数据 以下是我用来发现
  • 更新 Google App Engine 中的模型架构?

    谷歌建议一次将一个条目更改为默认值 http code google com appengine articles update schema html http code google com appengine articles upd
  • 为什么 WinForms/WPF 控件不在内部使用 Invoke?

    我明白为什么 GUI 控件具有线程关联性 But 为什么控件不在其方法和属性中内部使用调用 现在你必须做这样的事情才能更新TextBox value this Invoke new MethodInvoker delegate textBo
  • Amazon SSE-S3 密钥轮换如何工作?

    我正在尝试围绕 Amazon 的服务器端加密选项进行思考 以便在我的应用程序上传文件时开始要求 S3 加密我的静态数据 到目前为止 AWS 管理的加密密钥选项听起来像是我正在寻找的 Model C https media amazonweb
  • Room 的“onDelete = CASCADE”在迁移期间不起作用

    我有以下表格 Entity tableName users class Users PrimaryKey autoGenerate true var id Long null NonNull var name String null Ent
  • 如何使用 PlistBuddy 将多个条目添加到 plist 字典中

    In my Info plist我想修改 shell 上的 Plist 文件 如下所示
  • Python跨平台监听按键?

    我需要在 python 终端程序中监听某些按键 而不用暂停执行raw input 我见过人们使用一些特定于 Windows 的方式来监听击键 并且我见过人们使用像 tkinter 和 pygame 这样的大型模块 我想避免这些模块 是否有一
  • 如何完整遍历未知深度的复杂字典?

    导入自JSON可以得到非常复杂和嵌套的结构 例如 u body u declarations u id u name u i u type u Identifier u init u type u Literal u value 2 u t
  • 如何转到 Chrome 开发者工具中的特定文件?

    我正在开发一个采用重型前端方法的 Web 应用程序 通过使用 Dojo 和 AMD 方式 我目前的测试屏幕可以轻松加载一百多个不同的 javascript 文件 当我想要调试任何特定问题 或者验证是否看到特定文件的旧版本时 我发现很难在 C
  • 使用 loginPopup 时 Microsoft 身份验证反应“hash_empty_error”

    我无法理解在尝试使用 Micrsoft Authentication 库 for React PWA 对用户进行身份验证时遇到的错误 我需要帮助理解为什么尝试使用 loginPopup 方法登录用户时失败 在某些情况下 身份验证按预期工作