问题标签 [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.
angular - Azure AD Msal 拦截器访问令牌
我正在使用 azure MSAL 来验证我的 API,但问题是我正在使用 DevExtreme 自定义存储进行服务器端分页。
Msal Interceptor 为 HttpClient 工作并自动生成令牌,但在这种情况下,我不通过 http 发送请求。
如果我使用登录后获得的访问令牌,则会发生错误无效签名,如果使用 IdToken,那么 401 我该如何解决这个问题。
MSALInterceptorConfigFactory:
我正在获取 accessToken 和 IdToken 的登录响应
我在结果中都得到了 accessToken 和 IdTOken 但如果我向它们发送对 Bearer 的请求,这些都不起作用
angular - 无法在我的 Angular 应用程序中单击按钮以通过 microsoft 帐户重定向和连接
我构建了一个 Angular 应用程序,我想让用户仅通过 Microsoft 帐户使用 @azure/msal-angular 和 @azure/msal-browser 包连接到它。
我创建了一个组件来处理称为登录的连接
这是 login.component.ts
login.component.html
app.module.ts
app.component.html
最后是我的 app-routing.module.ts
当我点击那个按钮
登录,什么都没有发生。当我尝试在登录函数 (login.component.ts) 中使用 loginPopup() 执行此操作时,我会有一个弹出窗口在出现后立即消失。我以为是portal.azure.com的注册申请问题,所以我删除了以前的应用注册并创建了一个新的,并将id放在app.module中,但仍然没有。
任何帮助将不胜感激。
非常感谢 !
angular - 生产 SPA 上的 Angular 应用程序 Http 解析错误
我在同一目录中有角度和 dotnet 核心模板应用程序。
我必须在 azure 服务器上上传构建,但出现此错误。请指导我如何解决这个问题。
生产:
本地主机:
angular - MSAL profileEdit 在注销和登录之前不会将更改的配置文件数据返回到 Angular 应用程序
我有一个应用程序,它使用 MSAL 和 Azure 用户流在我的 Angular/Ionic 应用程序中提供登录、注册和配置文件编辑页面和功能,但由于某种原因,被编辑的配置文件会将未更改的数据返回到我的应用程序。如果我回到 Profile Edit 用户流程,我会看到正确的更改配置文件数据,但是当我返回应用程序时,它仍然显示旧数据。刷新页面也不起作用。
奇怪的行为是,只要我注销并登录,此配置文件数据更改就会显示在我的 Angular 应用程序中。
我尝试acquireTokenSilent()
并ssoSilent()
传递旧配置文件信息的参数以希望获得新的东西,但我仍然会从 AuthenticationResults 收到旧的配置文件信息。
我尝试将一个添加iframeHashTimeout
到 MSAL 配置,但没有奏效。
任何人都可以就如何解决这个问题提供煽动或新的想法,感觉就像我只是在黑暗中刺伤。
jwt - Azure AD B2C 一直提供 v1 令牌而不是 v2 令牌
即使在已注册的 SPA 应用的清单中配置了 v2 令牌,Azure 的 AD B2C 仍会继续发布 v1 令牌:
客户端使用@azure/msal-angular v2.0.5(连同@azure/msal-browser v2.19.0)通过普通的MSAL拦截器请求令牌:
这看起来不错,尤其是"accessTokenAcceptedVersion": 2
.
令牌仍然是 v1 的根本原因可能是什么?
指针将不胜感激。
angular - 使用 MSAL 库 v2 的 Angular 应用程序在重新加载页面后显示登录页面
MSAL 配置符合以下代码片段:
我能够成功登录并使用该应用程序,但是当我刷新页面时,会出现登录提示以进行登录。此配置中缺少什么?
msal - 尝试注销时,MsalService / PublicClientApplication 为空
高层问题
我有一个成功连接到 Azure AD 应用程序进行身份验证的 Angular 应用程序。到目前为止,这完全没有问题。问题是当我尝试执行注销功能时。我认为这个问题源于我如何在我的 Angular 应用程序中实例化 MSAL 库。
背景和代码
下面是我的app.component.ts的部分代码。有一个配置服务可以读取本地 JSON 文件以获取 Azure clientID、applicationID 等信息。这是JsonConfigService的一部分。一旦 NgInit 运行,我们还会从CompanyApi获取信息,该信息提供登录用户的名称、他们的姓名等信息,并将其显示在整个应用程序中存在的标题上(因此,它位于app.component.ts文件)。这个标题有一个汉堡菜单,由下面的 JSON 填充,应该是直观的。
运行时的问题:
如果我在NgInit()上设置断点,我可以确认_msalAuthService和实例属性中都有一个对象。伟大的。但是,当我单击 Logout() 的 Hamburger 链接时,this._securedApplication是未定义的。此类中没有其他代码可以删除this._securedApplication。同样,clientid 等都很好。有效令牌已通过,我可以看到网络流量。
我认为问题出在哪里
为了适应从配置文件中读取,MsalModule 和各种模块被加载到app.module.ts文件的Providers部分。它看起来像这样:
它似乎工作得很好,配置设置正确。我只是没有提到我认为是注入变量的东西。
我在这里做错了什么,有没有更好的方法来实现这一点?
angular - 在 Angular 8 中使用 hashlocationstrategy 时,不会调用 @azure/msal-angular 包的 handleRedirectCallback
目标 -我正在使用angular 8 中的 @azure/msal-angular和msal库实现 azureAD 身份验证。
问题 -使用 pathlocationstrategy 时一切正常,但使用 hashlocationstrategy 时,@azure/msal-angular 库的回调没有被调用。
代码流 -
用户单击 HomeComponent 中的登录按钮 -> 用户被重定向到微软的登录页面 -> 用户输入凭据 -> 成功登录后,用户被重定向到msalLandingComponent主组件(在 appcomponent 的 routeroutlet 中呈现),其中回调(this._msalService .handleRedirectCallback) 应该执行。
代码
环境.ts
还尝试将 redirectUrl 作为 http://localhost:4200/
应用程序路由.module.ts
{ 路径:'msal-landing',组件:MsalLandingComponent }
HomeComponent - 用户单击调用 onButtonClick() 的登录按钮
home.component.html
home.component.ts
msal-landing.component.ts
问题描述
用于将用户重定向到微软的登录页面
被调用,登录后用户被重定向到重定向 url,在 ngOnInit 下面的代码应该执行
但是在使用 hashlocationstrategy 时不会调用此回调。
附加信息 我认为在应用注册期间无法在天蓝色中设置 redirectUrl。
因此,我们没有将重定向 url 设置为“http://localhost:4200/#/msal-landing”,而是将其设置为“http://localhost:4200/”。这样就调用了 home 组件。
我已经通过将 msal-landing.component.ts 的 ngOnInIt 移动到 home.component.ts 来更新上述代码,并删除了 MsalLandingComponent。
但在这种情况下,也不会调用 handleRedirectCallback。仅当将此代码放入 app.compnent.ts 的 ngOnInIt() 时才会调用它。无法理解为什么它在根组件中被调用,它是 appComponent 而不是在 homeComponent 中。
msal - 如何从重定向到登录工作流中排除特定的 http 动词
我想在调用时将令牌传递给我的 api http.post('http://localhost/api/spaceships')
。但是,我想排除http.get('http://localhost/api/spaceships')
. 我正在使用 asp.net-core 并且存在一个[AllowAnonymous]
以及一个[Authorize]
属性。但是,我必须添加.../api/spaceships
到protectedResourceMap
,以便在发布期间使其超过授权属性。如何排除http.get
?我正在使用 msal-angular v2。角度 v11。