问题标签 [passport-azure-ad]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1252 浏览

node.js - passport-azure-ad:为什么我会收到“jwt 受众无效”?

(以下示例中的所有 ID 都是组成的。我添加了它们以说明某些参数的格式)。

我的租户位于 acme.co.uk,但我希望部署在https://subdomain.acme2.co.uk的 Web 应用程序将用户身份验证委托给 Azure AD。

我使用新门户注册了我的应用程序,如下所示:(字段名称是天蓝色门户上使用的名称)。

应用 ID 网址:https ://acme.co.uk/11111111-2222-3333-4444-555555555555

主页网址:https ://subdomain.acme2.co.uk/api/auth/aad

回复网址:https ://subdomain.acme2.co.uk/api/auth/aad/callback

并创建了一个不会过期的密钥:'111111111111111111/aaaaaaaaaaaaaaaaaaaaaa='

我一直在使用 v1 端点作为指南来关注 passport-azure-ad github 示例。

当我在浏览器中访问“ https://subdomain.acme2.co.uk/api/auth/aad ”时,我会被重定向到 MS 登录,然后我会这样做,但是当重定向回“ https:// subdomain.acme2.co.uk/api/auth/aad/callback '发生,我没有通过身份验证。

检查来自回调 POST 请求的标头,我看到:

任何想法我做错了什么???[:-|

(除此之外:调试这很痛苦,因为我在 docker 中运行并且重定向似乎无法正常工作,所以我必须部署到真实环境的 ATM)。

0 投票
1 回答
1124 浏览

node.js - 通过 passport-azure-ad 使用 state/customState

我无法弄清楚它的目的customState以及是否/如何利用它来将数据传递到返回 url。具体来说,我希望在登录后将用户路由回其原始位置。我认为我可以将原始 url 传递给参数customState并在返回 url 中将其返回给我POST,但它似乎已编码或可能替换为不同的价值。

这是我想要实现的目标:

  1. /page/protected需要身份验证的匿名用户访问。
  2. 代码调用passport.authenticate反过来将用户重定向到登录。
  3. 用户登录并返回到预先配置的返回 url,例如:/auth/oidc/return.
  4. 代码处理从表单发布数据中提取信息。
  5. 用户被引导回/page/protected
0 投票
2 回答
1867 浏览

node.js - 天蓝色上的状态无效,但在本地工作

我有一个 Azure Active Directory 租户,我希望通过在 Azure 应用服务实例上运行的 Node.js 应用程序对其进行身份验证。我正在使用 passportjs 和 passport-azure-ad 来执行此操作。

本地一切正常。我可以通过 Azure AD 租户进行身份验证,它会正确返回到我的页面。但是在 Azure 上失败并出现以下错误:

我的配置与我使用相同的租户进行本地测试以及在 Azure 中的配置完全相同(除了 redirectUrl),但它仍然失败。我已经设置了正确的回复 URL,并且身份验证返回到我的应用程序。

这是我的配置:

我正在使用 OIDCStrategy。

我的身份验证中间件:

我比较了authorize请求上的编码状态与返回的响应,它们在本地和 Azure 上的不同之处相同,但 Azure 是唯一抱怨的。状态如何不同的示例:

我也尝试过完全删除 customState 但它仍然失败。

有人知道这里发生了什么吗?我是否配置不正确?

编辑:看来这可能不是护照天蓝色广告的问题。我还不确定,但一些调试显示我的应用程序的登录请求中没有 set-cookie 标头。会话已创建,但未设置 cookie,因此返回的响应无法查找包括状态在内的会话信息并进行比较。结果是它报告无效状态,因为它无法从会话中检索数据。

0 投票
1 回答
841 浏览

javascript - Passport azure-ad 验证未调用回调

我在使用护照(使用 passport-azure-ad 策略)对请求进行身份验证时遇到了问题。对 Azure Active Directory 的请求工作正常。我可以使用我的凭据登录。之后,我希望调用验证回调,根据 accessToken 等设置用户对象。然后我希望在用户对象可用的地方调用重定向路由函数。这是我的设置:

我的路线:

10 次中有 2 次,我的期望是正确的,一切正常。其余时间从不调用验证回调,或者在它之前调用重定向路由函数,因此从不设置用户对象(用户为“假”)。

任何人都知道我该如何度过这个难关?

0 投票
1 回答
1975 浏览

node.js - Azure Active Directory 动态回复 url

我处于以下情况:我有一个 nodejs 应用程序,它通过 passport-azure-ad 模块使用 azure 活动文件夹身份验证系统。

目前,我在门户网站上注册并在护照策略配置中设置为 redirectUrl 的回复 url 是https://localhost:3000/microsoft/auth。当我从运行服务器的机器上完成身份验证过程时,一切正常,但在我使用我的 microsoft 帐户登录并返回https://localhost:3000/microsoft/auth后,任何其他设备显然都失败了(更多准确地说,身份验证进行得很顺利,但由于明显的原因,返回的页面没有加载)。

如果我将护照策略(我正在使用 OIDCStrategy)配置中的 redirectUrl 更改为服务器运行的位置,例如https://machine.that.runs.the.server:3000/microsoft/auth而无需先注册 url当我尝试进行身份验证时,我收到与回复/重定向 url 不匹配相关的错误。

我不想在门户上注册https://machine.that.runs.the.server:3000/microsoft/auth的原因是因为我希望能够从任何机器上运行服务器并拥有任何其他机器连接到它并在身份验证过程后正确重定向,或者至少在我办公室内部网络中的任何机器上。

所以我要问的是,是否有办法删除回复/重定向网址检查或有某种动态 redirectUrl 选项,我可以在我的请求中设置回复网址。如果这两个都不能完成,我想知道是否有一种方法可以从门户注册回复 URL,该 URL 适用于我网络中的所有计算机,例如 10.3.144.x:3000/microsoft/auth。

提前致谢。

0 投票
2 回答
1654 浏览

javascript - 节点 Passport-azure-ad 错误:“未知身份验证策略“oauth-bearer””

我一定错过了一些非常明显的东西。

我一直在尝试信任/遵循有关此文档的官方文档,但我注意到我实际上并没有使用我在任何地方定义的整个“承载策略”。如果我尝试用 BearerStrategy 替换 oauth-bearer,我会得到完全相同的结果。

设置:

index.js 中的端点:

来自文档文件的配置:

0 投票
1 回答
2240 浏览

node.js - passport-azure-ad Strategy.prototype.jwtVerify:无法验证令牌

我在这篇文章之后创建了一个 Web API:https ://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-v1-nodejs-webapi

但是当我尝试调用 api 我得到这个错误: Strategy.prototype.jwtVerify: cannot verify token

它说它无法验证令牌......我读到这个:https ://github.com/AzureAD/passport-azure-ad/issues/373我添加了观众属性,但它不起作用:

以下是护照的选项:

这个想法是从客户端或其他 Web 应用程序调用经过身份验证的 API……这是我正在使用的方法:

有什么想法吗?

谢谢!

0 投票
3 回答
3559 浏览

node.js - 如何在 Node.js 应用程序/API 中从 Azure AD 发出令牌?

我正在构建一个带有快速后端的节点应用程序。其中一项要求是使用 Azure AD 进行身份验证。我已经安装了passport-azure-ad模块并将其设置如下:

然后我为这样的路线添加了授权:

这将按预期返回 401 状态,但是,我无法找到有关如何从 Azure AD 向客户端颁发令牌的文档。我想在正文中使用用户名和密码接受登录端点的 POST 并返回 Azure AD 令牌。这可能吗?

0 投票
1 回答
477 浏览

node.js - NodeJS Passport 为每个路由配置,作为中间件添加并且没有错误,但它不起作用/触发

我有一个 NodeJS Api 并且我使用 Passport Azure AD Bearer Token 进行身份验证——当我全局配置它时一切都很好,但为了能够保持它干净,我需要为每个路由文件配置它。

我采用了首页上的逻辑并将其作为中间件添加到路由文件中,但它似乎没有触发:

配置对象也出现在此代码上方。

0 投票
0 回答
334 浏览

javascript - 从 Angular 6 调用时,节点中的 Passport-azure-ad 不会重定向到 Microsoft 登录页面

我有一个快速应用程序,它使用passport-azure-ad.

Express 应用程序有一个带有登录按钮的视图,当用户单击此按钮时,将/login调用端点。此端点运行passport.authenticate将我带到 Microsoft 登录页面的方法。

当我从 Angular 6 到达这个端点时,我收到了一个错误:

从源“null”访问“ https://login.microsoftonline.com/ ”处的 XMLHttpRequest(从“ http://localhost:3000/login ”重定向)已被 CORS 策略阻止:否“访问控制允许” -Origin' 标头存在于请求的资源上。

它不会将我重定向到 Microsoft 登录页面。

我的代码的屏幕截图

在此处输入图像描述

成功登录后,我通过这种方法收到了来自微软的令牌和用户登录信息。

在此处输入图像描述

任何形式的帮助将不胜感激。谢谢