问题标签 [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.
node.js - 重定向到redirectURL passport-azure-ad OIDCStrategy
我正在尝试通过 Azure AD Passport.js OIDCStrategy 进行登录。到目前为止,我使用接下来的两页(除了谷歌和在 stackoverflow 上查看问题)作为资源最多:
- https://github.com/AzureAD/passport-azure-ad
- https://github.com/AzureADQuickStarts/AppModelv2-WebApp-OpenIDConnect-nodejs
我有以下问题,因为我还想扩展关于 passport.js 和 Azure AD 策略的知识:
- 当我转到 /auth/AzureAD 时,我被重定向到https://login.microsoftonline.com/登录表单。但是,当我输入有效的登录凭据时,我会被重定向到 redirectUrl。我究竟做错了什么?
- /auth/AzureAD/callback 还应该有一个 router.post 吗?如果有,为什么?
- 对于其他 passport.js 策略(谷歌和本地),我们需要将一些详细信息存储到我们的 MongoDB 中。不应该对 Azure AD 策略也这样做吗?如果是,哪些细节?
- 什么时候使用 BearerStrategy 而不是 OIDCStrategy?
我很确定我已经以正确的方式配置了 identityMetadata 和 ClientID。我不会分享这些信息,因为我不确定我这样做是否正确。
如果你能帮助我朝着正确的方向前进,已经非常感谢了!!!
护照.js
应用程序.js
auth.js
登录.ejs
msal - 我可以为使用 passport-azure-ad 登录的用户使用什么 ID?
我正在将 Microsoft 帐户身份验证添加到我的 Web 应用程序。我们需要将有关登录用户的额外信息存储到数据库中。我可以使用什么 id 让用户将此数据与相关联?我假设它是 oid、tid 或 sub。
azure - 使用 VueJS SPA 和 Vuex 的 Passport-azure-ad 与 OAuth 2.0 授权代码流(使用 PKCE)
我一直在研究最适合我需要的模式。这是我目前正在运行的。 https://docs.microsoft.com/en-us/azure/active-directory/develop/sample-v2-code
- 我在用着
- VueJS CLI 2(但应该能够很快升级到 VueJS 3。)
- Vuex
- Azure B2C
到目前为止,我已经尝试使用 passport-azure-ad 来实现 VueJS,结果好坏参半。我从 express 服务器收到了我的令牌并创建了 MongoDB 会话,但是,我无法转换 JWT 令牌或将其提供给 Vue。在身份验证并转移到另一台服务器之后,关于该实现如何工作的文档确实不多,但是,我并没有真正深入研究这一点,因为我不知道这是否仍然是使用中间件服务器的正确方法。
Passport-Azure-AD 方法 - https://github.com/AzureAD/passport-azure-ad
优点
- 我喜欢我有一个使用策略进行身份验证和授权的 NPM 包。当我阅读它时,我确实喜欢这种模式,但我看到 MS 告诉我另一个最佳实践是使用带有 PKE 的 MSAL 2 作为最佳实践。是什么赋予了?
缺点
- 默认情况下,这会在 MongoDB 中实现会话管理,现在我需要将其传递给 Vuex。我真的需要两种不同的会话管理策略吗?
- 当有我可以使用的 JS 库时,为客户端运行 VueJS 并为中间件运行快速服务器实例以控制安全性似乎过度。MSAL。
MSAL 2.0 示例代码 - https://github.com/Azure-Samples/ms-identity-javascript-v2
在阅读了 PKE 之后,我相信 MSAL 2.0 有点不同 - https://docs.microsoft.com/en-us/azure/active-directory/develop/scenario-spa-overview
MSAL 2.0 对用户进行身份验证并获取令牌,然后将该令牌发送到 API 并不时刷新。这似乎是与护照不同的策略,而且看起来更干净,而且似乎我可以在没有中间件服务器( express )的情况下实现这一点,只需使用 VueJS 和 vuex。
优点
- 使用 VueJS、vuex 和 axios 可能更容易实现
- 可能不需要实现快速服务器(中间件服务器)
缺点
- 需要实现更多的编码和配置
我已经审查了一些将 Nuxt 与 passport-azure-ad 和 VueJS 一起使用的软件包,但是,我们目前没有使用 Nuxt,并且希望尽可能避免使用它。
我真的需要一些关于如何有效解决这个问题的想法,因为这里有很多选择,而且它们在最佳实践方面相互矛盾。
node.js - Passport.js 将 azure-ad 身份验证链接视为相对链接,尝试登录时返回 404
我们正在使用passport-azure-ad
允许我们域中的用户使用他们的 Microsoft AD 凭据登录到内部节点应用程序。我让这个系统以前只使用 1 个节点应用程序,但现在我们正在尝试一个新系统,其中我们有 2 个独立的应用程序在本地运行 PM2,并通过 IIS 在相同的 URL 下提供它们,但您可以像这样访问每个应用程序:
mywebsite。 com/app1或mywebsite.com/app2
只有第二个应用程序需要身份验证。我遇到的问题是当您点击登录时,该passport.authenticate
方法似乎正在尝试重定向到相对授权链接:
mywebsite.com/{tenant}/oauth2/v2.0/authorize
,而不是实际的授权端点:
https ://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize
有谁知道为什么会这样以及我可以做些什么来阻止护照将身份验证端点视为相对链接?这会在每次用户点击 /login 时导致 404,因为/{tenant}/oauth2/v2.0/authorize路由不存在。
node.js - Microsoft AD 身份验证节点 js 库
我正在开发一个 nodejs 应用程序,我想在其中使用 Microsoft AD oath2 流。我在这里查看了微软的官方文档,发现他们列出了两个库 -
- msal节点
- 护照天蓝色广告
我需要帮助选择最能满足我需求的图书馆。我需要 -
- 执行身份验证
- 通过令牌验证保护一些 API
- 公开所有 api,以便它们可以在外部进行测试
- 在我的应用程序中调用外部网络 API
此外,文档说“Acces web apis”不能使用passport-azure-ad。他们这是什么意思?
angular - Passport-Azure-AD 未从 MSAL Angular 身份验证验证 access_token
我有一个 Angular 10 应用程序,我正在使用 MSAL-Angular 包对 Azure AD 进行身份验证。它使用授权流程成功地进行了身份验证access_token
和检索。id_token
我还有一个 Express API 后端,我将 access_token 附加到(使用 Interceptor from Msal-Angular
)到请求的标头上。我想验证此令牌以验证 Angular 应用程序在允许访问 api 之前是否已通过身份验证。为此,我尝试使用passport-azure-ad
BearerStrategy。我相信我已经正确设置了所有内容,但它一直告诉我无法验证令牌。
我发现如果我使用它id_token
而不是access_token
它可以被验证;通过护照策略和使用jwt.io。
所以这里真正的问题是我可以在我的配置中做一些不同的事情来验证access_token
通过使用Msal-Angular
还是我应该编写自己的拦截器来发送id_token
而不是access_token
?
API Passport 配置代码-我在这里要做的就是让护照验证通过,然后填写回调函数。
保护路线
给出的错误:
node.js - 在使用 Passport-azure-ad npm 模块和 OIDCStrategy 获取访问令牌方面需要帮助
我正在尝试从我的 NodeJS express webapp 调用 Microsoft Graph API,但我无法从 AAD 获取访问令牌。
我能够成功登录并且能够获取用户的个人资料,(能够获取代码和 id_token)接下来我想获取访问令牌,以便我调用 Graph Api 调用。
有人可以帮助了解如何从 OIDCStrategy 获取访问令牌吗?
node.js - 在nodeJS express App中每1小时使用Refresh_Token获取另一个Access_Token
我在 NodeJS Express 应用程序中使用 Passport.js (passport-azure-ad) OIDCStrategy 获得了 access_token 和 refresh_token。现在每 1 小时我的访问令牌就会过期,并且对应用程序的访问权限会被撤销。上一个访问令牌过期后,如何使用刷新令牌获取另一个访问令牌。我想继续使用刷新令牌每 1 小时请求一次此访问令牌。有人可以帮我提供一个我可以使用的片段。
azure - 对于前端的 React 应用程序和后端的 Express 应用程序,这是否是使用 Azure AD 对用户进行身份验证和授权的正确流程?
我在前端有 React 应用程序,我已在 Azure AD 中将其注册为 REACT_AZURE,并使用 @azure/msal-react npm 包对用户进行身份验证。
为了保护我的 Express 路由,我在 Azure AD 中将另一个应用程序注册为 API_AZURE,并在“公开 API”部分添加了范围“access_as_user”。
在“API 权限”部分的 REACT_AZURE 应用程序中,我添加了“access_as_user”的权限。现在我可以获取“access_as_user”范围的访问令牌并对我的快速服务器进行 API 调用。
在我的受保护路线中,我使用 passport-azure-ad BearerStrategy 来验证访问令牌,如果它有效,我有权获取资源。
这是正确的流程吗?我是否必须向 Azure AD 注册两个应用程序?如果没有,我该怎么做?
express - passport-azure-ad 在选项配置对象中设置角色而不是范围
我正在尝试使用 passport-azure-ad BearerStrategy 保护 Express API 的端点。我在 AzureAD 中创建了一个新应用程序并添加了一个应用程序角色 (Read.All),因为我想使用客户端凭据流。生成客户端密码后,我能够毫无问题地检索令牌,但问题是我无法弄清楚如何配置策略选项来查找角色而不是范围,因为使用客户端凭据流时没有定义范围。我可以通过删除范围键来使其工作,因为它是可选的,但我想利用它来限制对端点的权限。
我查看了 passport-azure-ad 文档,只有范围可用,所以我想知道是否必须解码令牌并将角色复制到使用范围键而不是角色的新生成的令牌中。
https://www.npmjs.com/package/passport-azure-ad - 第 4.2 节
欢迎任何帮助或建议。
问候。