问题标签 [msal-angular]
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 - Msal-Angular v1-acquireTokenPopup/LoginPopup 返回一个权限不足的访问令牌,即使在授予管理员同意后也是如此
在首次授予管理员同意时,我们收到了一个无效的 accessToken,其范围为空。如果用户再次重试——我们调用acquireTokenPopup 并且accessToken 变为有效。
复制步骤
第 1 步:管理员点击登录按钮 (loginPopup)
第 2 步:MS 提示登录和管理员同意页面(我们需要 User.Read.All)
第三步:我们调用acquireTokenSilent()来获取Access Token作为我们Graph Client的AuthenticationProvider
第 4 步:Graph API /users 请求返回 403 - 权限不足
核心库:@azure/msal 或 msal
核心库版本:1.4.8
包装库:@azure/msal-angular
包装器库版本:1.1.2
角度:7
我在这里创建了一个 GitHub 问题票:https ://github.com/AzureAD/microsoft-authentication-library-for-js/issues/3524
angularjs - 不使用 acquireTokensilent 获取令牌,但使用 acquireTokenpopup Msal-browser 获取令牌
我正在更新 MSAL 版本 1.x 到 MSAL 浏览器的角度。所以我试图从版本 1.x 迁移到 2.XI 能够成功替换代码并且它工作正常。但是我遇到了acquireTokenSilent的问题,但是使用acquireTokenPopup可以正常工作。我正在关注此链接: https ://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/v1-migration.md 。这是仅在 11 天前发布的最新库,除了基本文档之外,我无法从互联网上获得太多输入。问题是当我使用acquireTokenSilent时,它给出的错误为: getTokenerror BrowserAuthError:no_account_error:没有提供给acquireTokenSilent的帐户对象并且没有设置活动帐户 但如果我在同一个地方使用acquireTokenPopup,我的应用程序正在工作。样本:
但是如果我使用acquireTokenPopup,而不是acquireTokenSilent,它的工作正常我没有得到什么问题。
c# - 如何诊断 Microsoft 身份验证失败?
我有一个受 Azure 身份验证保护的 ASP.NET Core 3.1 Web API 应用程序。我还有一个调用 Web API 的 Angular 11 应用程序。
它们在我们的集成环境中运行良好。但在测试环境中身份验证失败。
Angular 应用程序使用 msal-angular 库进行了很好的身份验证,它获取访问令牌并在调用 Web API 时包含它。但是 Web API 无法从不记名令牌中检索身份。
在多次删除并重新创建(前端和后端)Azure APP 注册并重新配置它们后,身份验证仍然失败。我不知道是什么原因,所以这就是为什么我需要诊断它。
我已启用JwtBearerMiddlewareDiagnosticsEvents
,并且可以在日志中看到“Begin OnAuthenticationFailedAsync”和“End OnAuthenticationFailedAsync”。但这还不够信息。它不再告诉您事件已引发,也没有其他信息。
我已阅读以下有关文档的文章,该文章告诉您如何在 MSAL.NET 中配置日志记录,但我认为它不适用于 Web API。
https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-logging-dotnet
所以问题是:我怎样才能找出身份验证失败的原因?有没有办法记录原因?
更新:
我更近了,我将日志级别设置为跟踪,现在我在 asp.net core web api 应用程序的日志中看到以下内容:
IDX10511:签名验证失败。尝试的键:'[PII 被隐藏。有关更多详细信息,请参阅 https://aka.ms/IdentityModel/PII.]'。\nkid: '[PII 被隐藏。有关更多详细信息,请参阅 https://aka.ms/IdentityModel/PII。]
更新:
我收到以下错误:
承载未通过身份验证。失败消息:IDX10214:观众验证失败。观众:'242e8f40-d795-43bc-8ac8-8eed3df71745'。不匹配:validationParameters.ValidAudience: 'b99e89fc-8a1c-4605-8c18-796d7064037e' 或 validationParameters.ValidAudiences: 'null'。
'242e8f40-d795-43bc-8ac8-8eed3df71745' 是 Web api 应用程序注册清单上的 AppId。
'b99e89fc-8a1c-4605-8c18-796d7064037e' 是 Web api 注册的客户端 ID。
范围是'api://242e8f40-d795-43bc-8ac8-8eed3df71745/api-access'。
这就是我设置范围的方式:
angular - Teams 桌面应用程序中的 MSAL v2 角度问题
我们在 MS Teams 桌面和移动应用程序中的 Web 应用程序(node.js + angular 10)面临 AAD 登录问题,而我们的用户通过单击任何 Web 浏览器或 MS Teams Web 客户端中的登录按钮轻松登录。
在 Angular 中,我们使用两个库(@azure/msal-browser msal 和 @azure/msal-common)并通过登录我们的应用程序使用 AAD 图形工具包。
在登录页面中,我们只是通过一个简单的登录按钮调用登录组件。我们将 Angular Web 应用程序添加为 MS Teams 的个人选项卡/应用程序。当用户在 Microsoft Teams 桌面应用程序中单击它时,我们在控制台中遇到以下错误消息:
我们假设 Teams Desktop 选项卡无法打开我们的身份验证机制,因为我们无法在函数下方添加代码:
这是来自团队 SDK javascript,我们没有弄清楚如何在 Angular 10 结构中使用此函数,我们无法从 Angular 中的任何包中调用该函数。
Angular 10 应用程序是否有解决方法来利用诸如 microsoftTeams.authentication.authenticate 之类的功能?ms团队等的任何打字稿包?
我们是否必须使用 React 创建一个外部 Teams-spesific-login 流应用程序(如这些代码:https ://github.com/AzureAD/microsoft-authentication-library-for-js/issues/2531#issuecomment-770110059 )和调用 ms 团队 js sdk 包以通过此 React 应用程序对用户进行身份验证,然后最终使用获得的令牌将用户重定向到我们的 Angular 10 应用程序?对于这种情况,这种方法是最好的情况还是最好的解决方法?
是否有任何方法可以仅在一个 Angular 10 独立应用程序和一种登录机制中继续使用浏览器、团队桌面应用程序、团队移动应用程序?我找到了这个主题(https://github.com/OfficeDev/microsoft-teams-library-js/issues/90),但不知道如何使用它来解决我的问题。
angular - 将 AD B2C 和 MSAL v2 与 Angular 结合使用,允许选择性的不受保护的 Web API 调用
我的目标是允许用户自由浏览 Angular 11+ 站点,在导航时读取从 .NET Web API 调用的数据。只有希望发布数据或访问特定功能的用户才需要使用 AD B2C 身份服务进行注册和登录。相应地,后端应用服务中的控制器被适当地标记为 [Authorize] 或 [AllowAnonymous]。
该站点成功地支持登录用户的浏览和发布,复制了AzureAD 示例中的方法。
然而,使用这种方法,Msal 的 httpInterceptor 显然会在每次数据库调用时触发,从而在所有端点上强制执行 B2C 注册/登录事件,从而挫败支持匿名浏览的努力。
MSAL v1 显然支持 unprotectedResource 数组,但对于 v2 已弃用。它显然也支持使用空模式,例如
由于该 v1 对象具有不同的形状,我在 v2 中尝试过这种方式,但无济于事
我尝试了其他方法,例如专门为需要授权的控制器设置 protectedResourceMap。那也失败了。
实现这一目标的正确方法是什么?
angular - MSAL Angular:客户端无效。请求正文必须包含以下参数“client_assertion”或“client secret”
我正在开发 Angular 项目并使用 MSAL 进行 Azure 身份验证。
它适用于 Angular 10 和 MSAL 版本 V1,但不适用于 Angular 11 和 MSAL v2。
获取无效客户端。请求正文必须包含以下参数“client_assertion”或“client secret”错误作为未经授权的响应。
下面的代码添加了\
`export function MSALInstanceFactory(): IPublicClientApplication { return new PublicClientApplication({ auth: {
}); }`
angular - 令牌调用在隐藏的 iframe Angular 8+ 中被阻止
我有具有上述配置的 Angular 应用程序。我正在使用 msal-angular 库中的 MsalInterceptor。在微软窗口登录后,我被重定向到我收到错误的应用程序:“令牌调用在隐藏的 iframe 中被阻止”,之后又出现“令牌更新因超时而失败”。问题在于acquireTokenSilent 方法失败。我看到更多的人有这个问题,这在这里描述:https ://github.com/AzureAD/microsoft-authentication-library-for-js/issues/1194 。即使用户在 localStorage 中有令牌,也存在此错误。我认为这可能只是警告,我可以捕获错误并充当已登录的用户,但没有,因为某些用户实际上没有令牌,然后是应用程序迷恋。有没有人遇到过类似的问题并处理过?
angular - 模块中的 Angular APP_INITIALIZER 无法正常工作
我有 auth 模块,它在应用程序初始化之前导入和设置 msal 配置。我正在使用 APP_INITIALIZER 来阻止应用程序的初始化并获取 MSAL-ANGULAR 的配置。问题仅在于 Firefox。该应用程序在 Chrome、Egde、Safari 上运行良好,但在 Firefox 上运行不正常。在不同于 Firefox 的所有其他浏览器上,APP_INITIALIZER 会阻止启动,直到加载 config.json。我注意到 MSALInstanceFactory 在 initializerFactory 函数之前被调用。
我在 auth.module 中使用的代码
ConfigService 中的代码
app.module 中的代码
angular - 以角度方式升级到 msal v2 后,我收到此错误 crbug/1173575, non-JS module files deprecated
我正在尝试将 msal 版本更新为 2.0.0。所有配置完成。
我正在使用 Angular 版本 10,并且在构建 Angular 应用程序时使用以下命令,因为我没有使用根路径
应用程序在此 url 中运行良好www.test.com/mywebsite
。但是登录后它会将我重定向到
https://www.test.com/abc
代替www.test.com/mywebsite/abc
我在控制台上看到了这个错误。
VM8:2759 crbug/1173575,非 JS 模块文件已弃用。
请让我知道如何解决此问题。
请有我的 package.json