问题标签 [msal.js]
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.
angular - msal.js 访问令牌中的自定义声明
我已经使用 msal.js 保护了我的 Angular 7 应用程序。我创建了一个自定义策略,它在 id_token 和 access_token 中返回自定义声明类型。为此,我一直在关注本教程:https ://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-custom-rest-api-netfw 。当我使用acquireTokenSilent()
msal.js 方法时,JWT 令牌不包含自定义声明(合同、fileUploadAllowed)。
当我在 Azure 的“自定义策略”窗格中使用“立即运行”按钮时,我确实收到了一个包含自定义声明的 access_token。
通过在 Azure 中运行策略生成的 JWT 令牌的有效负载(更改了一些值):
msal.js 生成的 JWT 令牌 (access_token) 的负载:
我想在 msal.js 生成的 access_token 中接收自定义声明。有谁知道我应该怎么做才能完成这项工作?
谢谢你。
typescript - 如何为 Microsoft 团队应用程序的 Microsoft 应用程序门户配置重定向 URI
我创建了一个 SharePoint Webpart 并将其启动到 Microsoft Teams。
Webpart 需要向 Microsoft Graph 发送请求以进行身份验证。在开发过程中,我添加了一个重定向 URL apps.dev.microsoft.com
,指向我的本地机器 ( https://localhost:4321/temp/workbench.html
)。身份验证工作正常。
当 Web 部件位于 Teams 中时,URL 是特定于频道/选项卡的,我似乎无法重现 URL 以完成身份验证。
我已经尝试了 URL 的组合,希望它们足以用于身份验证。在这里您可以看到运行良好的开发 URL。
这是带有 URL 的 Webpart,但我找不到对这些 Id 的含义的引用,以便重现链接。Microsoft 应用注册也不允许复制和粘贴此链接,因为它包含查询。
https://teams.microsoft.com/_#/tab::d7cdb44e-ed6e-4dwb-82db-b933adc8152d/General?threadId=15:512c0d9b1af125d68b5d310de6f76f@thread.skype&ctx=channel
手动点击此链接会将我带到位于团队中的 Web 部件,但它具有无法在应用注册门户中使用的查询字符串。我还尝试缩小该网址并粘贴缩短的链接 - 但无济于事。
如果有人能指出我在正确的上下文中重新创建我在上面发布的链接的正确方向,或者知道它不起作用的原因,请告诉我。谢谢。(用于演示目的的链接)。
预期结果 - 登录窗口关闭,用户通过身份验证。
实际结果 - 身份验证相关失败,因为重定向链接不匹配。
我的 Webpart 有一个按钮 - 它的第一个功能是使用以下代码对用户进行身份验证:
因此,它使用 Microsoft-graph 进行身份验证。我也将托管站点添加到 Redirect-Urls 列表中。这可以从共享点站点进行很好的身份验证-但是我该如何将该访问令牌发送给团队。
azure - 如何使用 MSAL 正确请求 Azure 资源管理终结点范围?
所以我读到如果你在范围内的资源 URI 末尾添加 .default ,它将返回我们一个正确的 v1 令牌。为 MSAL 设置 protectedResourceMap 时,范围究竟应该是什么?' https://management.azure.com/.default ' 似乎不起作用。“ https://management.azure.com/user_impersonation ”也没有。
设置范围的正确方法是什么,以便在请求同意我们的应用程序时批准 Azure 管理 API?
msal - MSAL:是否可以在不弹出弹出窗口的情况下获得登录状态?
我正在尝试创建一个允许基本 Google 或 Microsoft 用户登录的单页应用程序。使用Google Sign in for Websites,当用户登录并允许访问时,在后续访问时不会提示用户登录我的网站。我的 javascript 可以检查用户是否已登录,并执行必要的操作。
但是,使用 MSAL,无法检查用户当前是否已登录。看来我的 javascript 必须调用 userAgentApplication.loginPopup() 来检查用户是否已登录。这将始终导致显示弹出窗口,即使用户已经登录(并允许访问)。
有什么方法可以调用 javascript 中的函数来查明用户是否之前已经登录过?
先感谢您。
azure - 使用 Azure AD 和 MSAL 的 SPA 应用之间的 SSO
我们有一堆单页应用程序,并像 appA.xyz-corp.com 和 appB.xyz-corp.com 一样部署它们。我们如何配置 Msal javascript,以便用户不必登录每个应用程序。我们已经尝试过这里提到的方法https://github.com/AzureAD/microsoft-authentication-library-for-js/wiki/Sso。然而,会话存储存储每个域“appA.xyz-corp.com”的信息,而不是使用子域“xyz.com”。对于将 msal.js 用于多个单页应用程序和用户跨应用程序无缝登录的最佳实践,我们将不胜感激。
azure-active-directory - 如何配置 MSAL 以支持 AAD、Angular 7+、Azure Funcs
我想了解如何配置 MSAL 和相关工件以方便进行以下配置。
- 前端 Angular 7+ 网站/应用程序发布到 Azure 存储帐户并用作静态网站。
- 用于在 Cosmos-DB 数据库上执行 CRUD 操作的后端 Azure Functions API 项目
- Angular 网站前端和 Azure Functions API 后端都应仅限于我们 Azure Active Directory 中的个人。
我试图通过研究这个演示项目来学习如何为我的预期用例配置 MSAL:https ://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/自述文件.md。不幸的是,该项目引用了一个不再运行的 API 后端站点。并且后端位不包含在存储库中。
演示项目msal-microsoft-authentication-library-for-js\lib\msal-angular\samples\MSALAngularDemoApp
不像发布的那样工作。登录尝试失败。一旦遇到Uncaught (in promise): AADSTS650052: The app needs access to a service (\"api://a88bb933-319c-41b5-9f04-eff36d985612\") that your organization \"<MY-ORG>\" has not subscribed to or enabled.
使用我当前的配置,在浏览器中,当 MSAL 尝试发出以下形式的请求时,我遇到了请求取消:
所以我显然做错了至少一件事。以下是我的配置摘要。但是,与其尝试调试我的配置,不如描述建立工作配置所需的所有步骤可能更容易(更有效)。
google-chrome-extension - 从 chrome 扩展使用 Microsoft Graph API(msal 库)
我正在开发 chrome 扩展,我需要针对 Microsoft 帐户对用户进行身份验证,以从后台脚本中使用 MSAL 库(Graph API)。但目前我收到错误AADSTS50011:请求中指定的回复 url 与为应用程序配置的回复 url 不匹配
不幸的是,我无法在 Microsoft 门户中输入以chrome-extension://开头的重定向 uri。
有没有办法实现这一目标,还是不行?
编辑:
好的,看来我可以为此使用chrome.identity.launchWebAuthFlow。但是在请求令牌时,需要client_secret(没有这个我得到 401 响应代码)。将此client_secret包含在扩展的后台脚本中是否安全?
如果我没看错,msal 库不需要 client_secret
azure - 使用 B2C 租户域时,使用 Azure AD B2C 保护的 Azure 函数返回未经授权
鉴于通过 AAD B2C 以https://login.microsoftonline.com/tfp/MyTenantName.onmicrosoft.com/signinsingunp作为颁发者 url 保护的 azure 函数,我可以通过 msal.js 应用程序成功验证 b2c 用户,就像我尝试将颁发者 url 更新为我的 b2ctenant 域登录 url(因为这个建议将 URL 重定向到 b2clogin.com)并更新 msal.js 应用程序中的权限以匹配域(myapp.b2clogin.com/tfp/MyTenantName.onmicrosoft.com/signinsingunp) ,我收到 401 相同的天蓝色功能,任何建议将不胜感激。
以下是详细的设置细节,
- Azure AD B2C 租户
- 域名:MyTenantName.onmicrosoft.com
- 应用:
- 应用程序A-Api
- 网络应用程序/API : 是
- 允许隐式流:是
- 回复网址:https ://myazurefunsapi.azurewebsites.net/.auth/login/aad/callback
- 应用程序 ID:https ://MyTenantName.onmicrosoft.com/ApplicationA-Api
- 发布范围:读取,user_impersonation
- API 访问:访问用户配置文件
- 应用B-Portal
- 网络应用程序/API : 是
- 允许隐式流:是
- 回复网址:https ://myportal.domain.com
- 应用程序 ID:https ://MyTenantName.onmicrosoft.com/ApplicationB-Portal
- 发布范围:user_impersonation
- API访问:ApplicationA-Api(读取,代表登录用户访问此应用),访问用户配置文件(offline_access,openid)
- 应用程序A-Api
- 用户流
- 注册登录
- 应用程序:ApplicationA-Api
- 回复网址:https ://myazurefunsapi.azurewebsites.net/.auth/login/aad/callback
- 选择域:
- MyTenantName.b2clogin.com
- login.microsoftonline.com
- 注册登录
- 应用:
- 域名:MyTenantName.onmicrosoft.com
- Azure 函数
- 认证/授权
- 应用服务身份验证:开启
- 未通过身份验证时要采取的措施:使用 Azure AD 登录
- 身份验证提供者:
- 天蓝色 AAD:
- 管理模式:高级
- 客户 ID:B2C-ApplicationA-ApplicationID
- 发行者网址:login.microsoftonline.com/......./opendid......
- 认证/授权
- 静态网站
- msal.js (v0.2.4)完成的 b2c 集成
- clientID : B2C-ApplicationB-ApplicationID
- 授权:https ://login.microsoftonline.com/tfp/b2ctenantname.onmicrosoft.com/signinsingunp
- b2cscopes:ApplicationA-Api-read
提前致谢!
reactjs - 在 SPA (React JS) 中针对 Azure AD 组授权用户的最佳方式
我们想在 SPA (React JS) 中针对 Azure AD 组授权用户;即,如果用户属于特定组(例如测试组),则用户允许从 SPA 访问 API。在Msal.JS中找到示例代码。
我正在跟进
- 创建 UserAgentApplication 对象
- 调用 Loginpopup(这里的图形范围是 - “Directory.Read.All”)
- 调用acquireTokenSilent(获取访问令牌调用MS Graph Api)
调用 MS Graph 检索用户所属的所有 AD 组
获取 AD 组的网址 - https://graph.microsoft.com/v1.0/me/memberOf
- 收到广告组(用户所属)后,验证用户是否属于该广告组(此处 - testgroup)
请建议我是朝着正确的方向前进还是有任何其他选择。
谢谢你的建议。
问候,
德布