问题标签 [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 回答
143 浏览

express - 使用 OpenID 的 cookie 流的 passport-azure-ad 挂起并返回具有“未定义”值的令牌

当前配置:

我制作的用于测试的临时密钥:

和我的 cookie-parser 中间件:

我也尝试将密钥作为秘密传递给 cookie 解析器,但我很确定这不是预期的用途。

登录后重定向永远不会发生,但在节点控制台上我可以看到令牌的默认值,例如:

现在我觉得我显然遗漏了一些关于你应该如何配置这些 cookie 加密密钥并生成它们的东西,或者它只是有点倒退。

  • 我是否必须使用与 cookie-parser 中间件使用的密码相同的密码自己生成密钥并在那里提供?
  • 我看到 passport-azure-ad 正在使用特定的 AES 算法,它需要 32 位密钥和 12 位 iv,我是否还需要以某种方式使用 cookie-parser 强制执行此操作以使其匹配?
  • iv 怎么样,不需要经常更换吗?我现在是否必须管理整个基础架构才能让它为 cookie 流工作?
0 投票
1 回答
996 浏览

javascript - MSAL 和 passport-azure-ad 无法验证令牌

我无法将我们的 ReactJS 应用程序中的 Azure Active Directory 访问控制链接到我们的 API,并且阅读有关此问题的文档给我留下的问题多于答案。

我首先按照 AAD单页应用场景中的说明开始操作,这很简单,允许我登录到我之前提到的网络上的 AAD 帐户。效果很好。

但是,在配置我们的 NodeJS API 时,我看到了两个选项:调用 Web API 的 Web 应用程序受保护的 Web API

在调用 Web API 的 Web 应用程序中,注册很简单,让我相信这是要走的路,但是代码配置页面指出仅支持 ASP、Java 和 Python。我找不到任何适用于此场景的 JavaScript 示例,因此我转向受保护的 Web API。

同样,虽然我发现注册部分很容易理解,但代码配置页面仅列出了 .NET、NodeJS(但仅适用于 App Functions,而不是独立 API)和 Python 中的示例。鉴于 NodeJS 示例与独立 API 非常接近,我跟随该代码,在适当的地方替换我们的配置选项,因为它使用了我在其他地方看到的并且之前尝试实现的passport-azure-ad包。但是,在这两种情况下,每次尝试对受保护的端点进行 API 调用都会导致 API 记录以下内容:

“身份验证失败,原因是:在 Strategy.prototype.jwtVerify:无法验证令牌”</p>

此外,我不确定这可能有多相关,但我注意到当我在 ReactJS 应用程序上解码 ID Token 和 Access Token 时,ID Token 版本是 2.0,但 Access Token 是 1.0。通过 Github Issues 和 StackOverflow 进行搜索表明其他人也观察到了这种行为,尽管我无法复制他们的流程以获得 v2.0 访问令牌,我怀疑这是无法使用的原因。 NodeJS API 来验证令牌。

哦,我在客户端中使用 MSAL.js 1.3 和 2.0 beta 时观察到了相同的行为,以防万一。

0 投票
1 回答
549 浏览

azure - Azure AD 令牌验证 - 为什么要验证颁发者?

我有一个使用 Azure AD 令牌进行身份验证和授权的 API 服务。我计划为此使用https://github.com/AzureAD/passport-azure-ad库,并且需要使用 BearerStrategy - https://github.com/AzureAD/passport-azure-ad#42-bearerstrategy。我对validateIssuer物业感到困惑。 如果我正确理解文档,则需要一起使用validateIssuer和配置。issuerissuer是一个包含租户 ID 和用于发布令牌的 AD 版本(1 或 2)的 URL。作为将验证令牌的 API 服务,为什么 API 服务会关心用于颁发令牌的 AD 版本?因此,当它应该只关心租户 ID 时,它为什么要验证颁发者 url?我试图理解为什么必须验证整个发行者 url 而不仅仅是租户 ID。

0 投票
0 回答
172 浏览

node.js - 使用 Nodejs-Restify-Passport 每个用户一个会话

如何使用 node-passport-restify 允许每个用户进行一个活动会话?IE; 不允许用户一次使用其他选项卡或浏览器在多个会话中处于活动状态。

这是应用程序运行的代码。

配置.js

我试过了

var passportOneSessionPerUser=require('passport-one-session-per-user')

护照使用(新护照OneSessionPerUser())

但是,它没有给出预期的结果。

0 投票
1 回答
233 浏览

adal - 护照 oauth 身份验证 - 令牌存储在 cookie 标头中

在我的 api 验证节点应用程序中,我在passport-azure-ad包中使用BearerStrategy 。

文档中,指定

用户向受保护的 Web api 发送请求,该请求在授权标头或正文中包含 access_token。

如果访问令牌存储在cookie 标头而不是授权标头中,是否可以验证 api?

代码如下:

因此,如果我在 cookie 标头中传递访问令牌 - 它未经过验证。我应该使用其他一些包,如护照 cookie 吗?那么如何通过 Azure 凭据与 Azure Active Directory 集成?

0 投票
1 回答
1316 浏览

azure - 护照天蓝色广告单点登录 (SSO)

我正在尝试使用 passport-azure-ad 包通过 Azure AD 为使用 React、NodeJS 和 Express 构建的网站设置身份验证。身份验证成功运行,我能够进行身份验证并检索令牌,但即使我在 admin.microsoft.com 或 sharepoint.mytenant.com 上有登录会话,登录时也会出现登录提示。我知道 passport-azure-ad 文档说可以使用单点登录,但我无法找到有关如何设置它的任何指导。

护照策略:

signInComplete:用户当前存储在内存中而不是数据库中。使用 simple-oath2。

授权功能:

任何帮助表示赞赏,谢谢。

0 投票
1 回答
153 浏览

typescript - Passport Azure AD 此表达式不可调用

示例中,使用了以下代码:

这会引发以下 TS 错误: 在此处输入图像描述

虽然代码有效,但我想知道如何避免这个错误。

0 投票
0 回答
1748 浏览

javascript - 401 - 未经 Azure AD 授权,使用 passport-azure-ad-oauth2

我正在尝试使用针对 Azure AD 的“passport-azure-ad-oauth2”使用 oauth2 策略设置护照。它适用于一个租户,但不适用于另一个租户,即使它们的设置方式完全相同。

在被重定向到 Azure AD 登录并输入我的用户名 + 密码后,我被重定向到 failureRedirect。如果我禁用 failureRedirect,我将被发送到一个类似于 http://localhost:3006/auth/login/azure/return?code="my token here"&session_state="my session state" 的 URL

Azure 发出我的令牌,但是当我被发送到 returnURL 时,我只是得到“未经授权”并且我从未到达回调,因此无法注销任何错误。

Azure AD manifest.json

错误

如果我转到 Microsoft Azure 门户中的企业应用程序,我可以在“登录”下看到登录活动。

对于每次登录尝试,我都会收到一个成功事件,以及一个“中断”,失败原因是“当前请求可使用多个用户身份,或者该场景不支持所选帐户。” 和登录错误代码:16000

0 投票
1 回答
349 浏览

javascript - 如何使用 passport-azure-ad (/w vue-msal) 保护 Web API

我想用 passport-azure-ad 保护 Web API 并使用 BearerStrategy。我遵循模块提供的示例并传递元数据和clientId,我总是得到401未经授权。

这是我的 passport-azure-ad 配置

我为授权请求标头提供了由 vue-msal 生成的访问令牌。
我还检查了访问令牌的签名也无效。

此外,我使用了 ID 令牌,但仍然 401 未经授权。

在门户 /AAD /App 注册中,我已经启用了两个隐式授权流程、<code>accessTokenAcceptedVersion: 2、在 API 权限中为我的订阅授予管理员同意

我还错过了什么?

0 投票
1 回答
2570 浏览

express - 如何使用 graphql 和护照设置身份验证但仍使用 Playground

向我们的后端 Graphql 服务器添加身份验证后,“Schema”和“Docs”在 Graphql Playground 中不再可见。向 Playground 中的“HTTP HEADERS”添加令牌时执行查询在经过身份验证而不是在用户未经过身份验证时可以正常工作,所以没关系。

我们禁用了 Apollo-server 的内置 Playground,并使用中间件graphql-playground-middleware-express来使用不同的 URL 并绕过身份验证。我们现在可以浏览到 Playground 并使用它,但我们无法读取那里的“Schema”或“Docs”。

尝试启用introspection并没有解决这个问题。调用ofpassport.authenticate()会更好吗?还有一个名为passport-graphql的工具,但它适用于本地策略,可能无法解决问题。在调用 Playground 路由之前,我还尝试在标头中设置令牌,但这不起作用。Contextapollo-server

我们对此有点迷茫。感谢您为我们提供的任何见解。

在此处输入图像描述

相关代码: