问题标签 [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 投票
0 回答
428 浏览

oauth-2.0 - 使用 Microsoft Graph 时的无效身份验证令牌

我有一个 Node.js API,它使用护照和 passport-azure-ad 的 OIDC 策略进行身份验证。

用户身份验证后,我得到用户的个人资料、access_token、refresh_token、sub 和 ISS。

然后我使用相同的 access_token 使用此 API 从 Microsoft graph 获取用户的详细信息 - https://graph.microsoft.com/v1.0/me

当我请求时,它提示我这个错误,

当我使用 OAuth 2.0 并获取 access_token 并使用该 access_token 访问相同的 API 时,详细信息将成功返回。

尽管我尝试匹配 Open ID connect 和 OAuth 2.0 返回的 access_tokens,但尽管以同一用户身份登录,但它们仍然不同。

我不明白为什么 Open ID 连接返回的 access_token 不起作用。

0 投票
1 回答
1521 浏览

azure - 验证 Node.js 中 Azure Active Directory OAuth 提供程序提供的 access_token

我有一个 React Native Client,它从 Azure Active Directory 获取 access_token,然后在标头的 Node.js API 中传递令牌。

在 Node.js API 中,该令牌将被验证......

我有一个名为 azure-ad-jwt 的 NPM 模块,

我尝试使用这段代码来验证令牌。

我不知道我是否遗漏了任何东西或我的配置有问题。

我收到此错误:JsonWebTokenError: invalid signature

尽管我的令牌已正确解码所有信息。

我不知道为什么它仍然会抛出这个错误。

如果有人能纠正这个错误并帮助我找到解决方案,那就太好了。

伙计们,这是令牌

谢谢!

0 投票
0 回答
225 浏览

node.js - 将 passport.js 用于 Azure AD 时出现错误“无法将用户序列化到会话中”

我正在尝试按照此处的 Office 365 Graph API 教程进行操作。

但是,我登录后一直遇到以下错误。

serializeUser方法如下所示:

问题可能是 user.profile.oid 似乎在 serializeUser 的回调函数中未定义(也尝试用普通函数替换箭头函数,但也没有用)。

但是oid在登录期间正在设置它,当我跟踪下面代码中的值时我可以看到它。

这是对 OIDCStratergy 的呼吁。

所以问题是这里的问题是未定义的 users.profile.oid 吗?如果是这样,它在哪里以及为什么会丢失?

0 投票
1 回答
1539 浏览

node.js - 即使在发送 Microsoft Graph 的正确令牌后,护照身份验证也无效

我有一个使用 passport-azure-ad 的 BearerStrategy 保护的 Node.js API。

我有另一个客户端应用程序,它为我提供了访问 Microsoft Graph 的令牌。我已使用该令牌访问 Microsoft Graph 并使其正常工作。

但是当我使用相同的令牌在我的 API 中进行身份验证时,它会抛出这个错误。

响应正文:未经授权响应状态:401

这是我的护照配置以保护 API

因此,当我点击主页“/”时,它会显示正确的响应,因为它没有被护照的安全层覆盖。

但是当我用标题点击http://localhost:8082/users 时: Authorization: Bearer <<>>

它返回未经授权,状态为 401。但我尝试使用相同的令牌访问 Microsoft Graph,我得到了响应。

这些是护照日志:

谁能帮我解决这个问题?

0 投票
0 回答
273 浏览

azure - Passport-azure-ad 如何创建 Bearer 令牌以传递给身份验证

我正在开发一个具有多个客户端前端的 API。虽然 OID 连接策略当前正在工作,但一些交互来自附加到 API 的服务器而不是客户端(没有用户交互)。我正在研究承载策略,但无法弄清楚如何允许服务器进行身份验证。

服务器 A -- 在 --> 服务器 B 上通过承载策略调用 API

调用必须包含承载令牌。注意:服务器 A 和服务器 B 都是用 Node.JS(不是 C#)编写的。答案应该针对 Node.JS 库。

此外,我们希望通过 Active Directory 组进行限制。我们正在使用通过 ADFS 同步到 Azure AD 的本地 Active Directory。谢谢你。

0 投票
4 回答
3088 浏览

node.js - 带有承载策略的 passport-azure-ad veriy msal.js 令牌

我正在尝试将 msal.js 库(https://github.com/AzureAD/microsoft-authentication-library-for-js)与 passport-azure-ad (https://github.com/AzureAD/passport-azure-广告)承载策略。

我的配置如下: Msal.js

护照天蓝色广告

在前端,我通过登录流程和 auire 令牌使用

然后我向受 passport-azure-ad Bearer Strategy 保护的端点发出请求并得到

我也在图书馆里登录过,上面写着:

我的解码令牌如下所示:

我尝试与 adal.js(https://github.com/AzureAD/azure-activedirectory-library-for-js)集成并成功,但我不能使用它给我的令牌代表用户调用图形 api (https://docs.microsoft.com/en-us/graph/auth-v2-user)。

我还尝试使用从 localStorage 获得的客户端 ID 令牌

它工作了一段时间,但是当我调用 getTokenSilent 时,这个 idToken 没有被刷新,所以它会在一段时间后停止工作。

我很困惑我现在应该做什么,所以任何帮助将不胜感激!

0 投票
1 回答
1172 浏览

azure-active-directory - 有没有办法使用像 Passport 这样的库在 NodeJS 中实现 Azure AD 代表(OBO)流?

我找到了有关如何使用 passport-azure-ad 来保护 NodeJS 中的 WebAPI 的示例(例如,使用 BearerStrategy),但我还没有找到任何专门在 NodeJS 中实现 OBO 流程的示例。

在我的情况下,我有一个客户端应用程序,它在 Authorization 标头中向我的 NodeJS 服务发送不记名身份验证令牌。如果我的理解是正确的,如果我想让我的 NodeJS 服务以用户身份调用 MS Graph API,我必须将令牌交换为不同的令牌作为 OBO 流程的一部分。

在我为使用 .NET 的服务找到的示例中,有一个用于此目的的库(并且您调用诸如 AcquireTokenAsync 之类的东西,并将 Bearer 令牌作为断言)。如果服务是 NodeJS 而不是 .NET,是否应该使用类似的库?

我知道这可以通过直接发出 HTTP 请求来完成,我只是不知道这是否是在 NodeJS 中执行此操作的首选/唯一方法。

谢谢!

0 投票
1 回答
785 浏览

javascript - 由于错误的 KID,passport-azure-ad 无法验证“id_token”

我在使用passport-azure-ad库时遇到问题,该库在尝试验证id_token. 具体的错误信息是"authentication failed due to: In _validateResponse: failed to generate PEM key due to: a key with kid %s cannot be found"

我可以看到's 标头kidid_token的 是一个未出现在密钥发现端点(格式https://login.microsoftonline.com/{tenantId}/discovery/v2.0/keys)中的值。

有什么理由会发生这种情况吗?我无法弄清楚。

我的代码如下:

pazzport-azure-ad日志中我可以看到在错误发生之前执行了以下步骤:

  • 收到 id_token
  • 收到 access_token
  • 收到 refresh_token
  • 令牌解码
  • 工作在关键
  • 工作在关键
  • 工作在关键
  • 身份验证失败,原因是:在 _validateResponse 中:无法生成 PEM 密钥,原因是:找不到孩子 %s 的密钥
0 投票
1 回答
399 浏览

azure - MSAL idToken 没有 upn、配置文件或电子邮件数据?在 idToken 中需要它来进行护照天蓝色广告授权

我在后端有一个 angular8 应用程序,使用官方 msal 包(不是 angular 包,主要包)我使用passport-azure-ad 授权(官方微软包)

我需要在 IdToken 中包含用户的电子邮件地址,因为我无法使用承载策略对访问令牌进行验证。我需要一些方法来通过 UPN 或直接获取该电子邮件地址。

我在不同的 AD 组下尝试了 4 个不同的帐户,到目前为止,只有 1 个 AD 组实际上在 idToken 中显示了一个“电子邮件”或“upn”字段。

应用截图中配置的权限。

登录请求的选项:

我尝试了我能想到的任何变体,我尝试让它们以大写字母(Email,User.Read)开头,就像在屏幕截图中一样,我尝试在范围和 extraScopesToConsent 周围交换它们,我尝试将“upn”放在任何地方但没有运气。

是否有可能:

A:以某种方式在令牌中获取该数据 B:获取另一个令牌,我可以使用具有该数据的后端将其验证为“不记名令牌”?

0 投票
1 回答
1082 浏览

node.js - 使用 Azure AD 与第三方进行 SSO

我有一个组织想要对我的基于 node.js 的 Web 应用程序使用 SAML 2.0 进行 SSO。单击 x.myapp.com 的链接时,我想利用他们的 IdP(它使用带有 SAML 2.0 的 Azure AD)并重定向到我的应用程序并向我提供一些属性。

我找到了 passport-azure-ad 和 saml2-js npm 包,但我没有看到任何涵盖这种情况的示例。有没有人完成这个看似简单的用例并提供任何链接或示例?到目前为止,我只找到了 iOS 或 Android 示例,但没有找到基于 Web 的 node.js 应用程序。

谢谢你。