问题标签 [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.
azure - 使用个人 Microsoft 帐户进行单点登录在 Azure 中的已注册应用程序中不起作用
我们使用公司帐户在 Azure 中注册了一个应用程序。我们已将其设置为 web-app 类型,并将 signInAudience 设置为AzureADandPersonalMicrosoftAccount
当我们使用公司帐户登录我们的网络应用程序时,它可以工作,但是当我们使用带有 hotmail 地址的个人 Microsoft 帐户时,我们会收到以下消息:
我们仔细检查了所有设置,它们看起来有效。我们的想法已经用完了这是我们清单的一个版本:
node.js - 是否可以使用 node.js passport.authenticate() 在 AWS api 网关中验证承载令牌?
我们有一个具有 MSAL 登录的前端反应应用程序,该应用程序使用 aws api 网关 api 端点进行后端操作。在登录过程之后,我想将承载令牌发送到 api 并对其进行身份验证。根据我在线阅读的内容,您可以使用 node.js 和 passport.authenticate() 来执行此操作。问题是试图在 aws api 网关中进行这项工作。所以我想出了一个通过 Authorizer lambda 进行身份验证的方案。1) 使用 aws-serverless-express 在 lambda 中将 express 作为 api 代理运行 2) 使用 passport-azure-ad 模块设置承载策略。3) 运行 passport.authenticate() 来验证令牌。4) 在 lambda 的有效令牌返回允许策略 5) api 请求将继续
我刚刚将以下文件和所需的节点模块放入 node.js lambda。所以这本质上是客户端和 api 之间的中间件。如果令牌有效,将允许请求通过。
在我的测试中,当它应用承载策略时出现此错误:
{ "name": "AzureAD: Bearer Strategy", "hostname": "169.254.43.173", "pid": 8, "level": 30, "msg": "authentication failed due to: token is not found", “时间”:“2020-08-24T23:48:35.497Z”,“v”:0 }
如果有一种更简单的方法来验证承载令牌,那就太好了。
Lambda index.js 文件:
配置.js
app.js 文件
node.js - 护照天蓝色广告:具有相同令牌的前端和后端(什么策略,以及如何?)
我正在尝试使用前端(http://localhost:8080)和 API 后端(http://localhost:5000)做一个 node.js 应用程序。在这两种情况下,我都希望通过 Azure AD 进行身份验证。
这是我的第一个这样的应用程序,所以我不知道如何处理它。
我想做的是:
- 在前端使用微软账号登录;
- 当用户登录,获取路由时(即http://localhost:8080/list),调用后端API(http://localhost:5000/api/list)获取信息'list'并渲染(取决于用户访问权限)。
我正在考虑使用“passport-azure-ad”,但我不知道该采取什么策略?OIDCStrategy 还是 BearerStrategy ?
我可以使用 OIDCStrategy 轻松进行前端登录,但我没有“承载”,所以我不明白如何使用相同的“登录”来调用后端 API?使用 BearerStrategy,我试图通过获取 'https://login.microsoftonline.com/'+MyTenantId+'/oauth2/v2.0/authorize?response_type=code&client_id='+MyClientId+'&redirect_uri=http%3A 来获得 Bearer %2F%2Flocalhost%3A3000%2Fcallback&scope=openid' 但每次我在 jwt.io 上对其进行测试时,它都会作为无效的承载('无效签名')返回,并且我无法在后端服务器中使用该承载。
我有点迷茫怎么办?我需要帮助。
谢谢
node.js - Passport-azure-ad:身份验证失败,原因是:无法建立隧道套接字,原因 = getaddrinfo ENOTFOUND 3128
我尝试在我的节点应用程序上实现 Passport-azure-ad OIDCStrategy。它可以在我的个人计算机中找到,但使用我的公司笔记本电脑(未配置 VPN 或代理)我无法连接,并且出现该错误:
我不明白为什么,因为我可以通过浏览器访问https://login.microsoftonline.com/
而没有任何问题。
我不明白端点节点尝试联系什么以及为什么无法建立隧道套接字。
有什么帮助吗?
谢谢
node.js - Azure AD 使用 Passport.js 对访问令牌进行无效签名
我正在尝试使用 passport-azure-ad 策略使用 Azure AD B2B 为我的 NodeJS/VueJS 应用程序设置身份验证。我使用授权代码流来获取 access_token 和 id_token。当我将 access_token 传递给 passport-azure-ad 策略时,问题就来了。我收到一条错误消息,指出令牌的签名无效(jwt.io 显示相同)。如果我使用 id_token ,那么一切正常。但是我不想使用 id_token,因为我想实现静默刷新,而我只能使用 access_token 来做到这一点。
这是我的设置:
- 我有一个 VueJS 应用程序(以 Node.js 作为后端),我想使用 AAD B2B 作为登录名
- 在前端我先做这个重定向:
- 然后我将代码发送到我的后端,用这个请求将它换成一个令牌:
- 然后我将令牌保存在会话存储中的前端,并与每个请求一起作为授权标头发送。
这是我的 BearerStrategy 的配置:
我认为问题是由于某种原因我得到了一个 v1 令牌而不是 v2。我尝试"accessTokenAcceptedVersion": 2
在应用注册的清单中进行设置,但没有成功。
我究竟做错了什么?
这是解码后的令牌,其中隐藏了一些信息:
更新: 原来我得到了一个不能用于我自己的 API 的 MS Graph API 的令牌。所以我必须为我的应用程序公开一个 API 并将其添加到 AAD 中的权限中。对于这种情况,这是一个非常好的教程-> https://authguidance.com/2017/12/01/azure-ad-spa-code-sample/
javascript - GraphQL Server 上下文中的 Passport Azure AD 身份验证
希望有人可以帮助菜鸟解决一些异步 javascript 问题。
我正在尝试使用 Passport 和 passport-azure-ad 策略来保护 GraphQL 服务器实例。我可以从日志中看到传入的访问令牌已正确验证,并且所有护照代码都按预期工作。
authErr 和 authUser 参数正确地传递给自定义回调,但是在执行回调之前返回上下文。
理想情况下,如果用户不可用,我想if (!user) throw new AuthenticationError('you must be logged in');
在上下文块中,但是由于代码的异步性质,我无权访问它。
如何使上下文中的代码等到执行自定义 passport.authenticate 回调?或者,我是否有更好的方法来做到这一点?我是阿波罗服务器、护照甚至使用节点的新手,所以如果我做错了什么我不会感到惊讶。
现在看来,我的设置context.user
甚至在传递给解析器的上下文中都不可用。
提前致谢。
javascript - 护照天蓝色广告失败?“Strategy.prototype.jwtVerify:我们没有收到我们知道如何验证的令牌”
我正在尝试验证 Angular SPA 用户以使用带有 passport-azure-ad 的节点 API。
使用 msal 的 SPA 似乎可以正常登录并发送不记名令牌。在 API 中,passport 在日志中提供此消息并且不验证令牌。
{"name":"AzureAD: Bearer Strategy","hostname":,"pid":18992,"level":30,"msg":"authentication failed due to: In Strategy.prototype.jwtVerify: 我们没有收到一个我们知道如何验证的令牌","time":"2020-11-16T09:05:39.130Z","v":0} 在护照日志中,我可以看到它已经解码了 JWT。
MS 的文档和教程没有提供解释。
这是问题还是配置?
在 jwt.ms 上,令牌看起来像这样(删除了敏感内容)
该令牌是为作为访客用户添加到 AD 的用户创建的。
配置(已删除租户 ID)
广告
两个已注册的应用程序,SPA 和 API,其身份验证设置为多租户和个人 Microsoft 帐户。向 SPA 授予一个 API 范围,“access_as_user”</p>
角SPA
角 7 @azure/msal-角 1.1.2
MSAL 配置NodeJs API
护照 0.4.1 护照天蓝色广告 4.3.0
节点配置microsoft-graph-api - 为单点登录配置 passport-azure-ad(无需输入密码)
我正在尝试使用 Azure AD 为我的 SaaS 实施单点登录。我正在使用本指南(带有示例代码): https ://docs.microsoft.com/en-us/graph/tutorials/node
我是否需要配置我的 passport-azure-ad 以启用单点登录?我不仅想将应用程序连接到 Azure AD,还想消除插入密码 (SSO) 的需要。我正在使用 OIDCStrategy,我的应用程序只需要确认用户的电子邮件地址(“谁”),仅此而已,以在我的应用程序中提取该用户的记录(如果该用户存在)。
我已将环境变量从常见的 Azure 端点更改为特定的租户指南、appid 和 secret。我得到了公司特定的屏幕(带有最终用户的公司徽标),用户可以在其中单击他们的帐户。这对于 SSO 来说应该足够了,但是现在用户会被重定向到登录屏幕(也是公司品牌的),其中包含他们的电子邮件和一个输入密码的字段。
所以问题归结为,我需要在我的 Node 代码中进行特定配置还是这纯粹是 Azure 设置问题?