【发布时间】:2019-12-26 01:34:36
【问题描述】:
对于如何将 nonce 参数实际用于 OpenID Connect,我感到非常困惑。我正在尝试通过 Microsoft Azure 和 Google 对用户进行身份验证,分别使用 Azure 和 Google 登录。
这是我当前的(隐式)流程。
- 当用户在浏览器中加载我们的登录页面时,google 和 azure msal 这两个客户端库将使用我们的客户端 ID 进行初始化。
- 登录页面上有两个按钮,每个按钮都会打开来自相应提供商的弹出窗口,重定向到 Google/Microsoft 登录页面。
- 用户输入他们的 Google/Microsoft 用户名和密码并登录。成功验证后弹出窗口关闭,并且 ID 令牌返回到浏览器 JavaScript。
- 浏览器 JavaScript 获取 ID 令牌并将其发送到我们的后端,然后我们在后端验证 JWT。
- 验证成功后,我们会为用户创建一个会话,并将浏览器重定向到仪表板。
我很困惑 nonce 在哪里适合所有这些,因为我使用的是基于 JavaScript 的流而不是 HTTP,所以不需要?是否由浏览器客户端库隐式处理?
如何确保攻击者无法在 Google/Microsoft 服务器和浏览器以及浏览器和后端之间嗅探 ID 令牌,而只是重新发送该 ID 令牌以验证用户身份?
【问题讨论】:
标签: node.js azure oauth openid google-identity