问题标签 [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.

0 投票
1 回答
438 浏览

javascript - 如何使用 javascript 中的 Microsoft 身份验证库 (MSAL) 获取个人 Microsoft 帐户的联系人?

我已经使用 Azure AD 仪表板实现了 MSAL 库,授予了 user.read、user.read.all、contacts.read、contacts.read.all、openid、profile、directory.read.all 的权限。租户(同一组织的账户)能够登录他们的账户并能够使用访问令牌获取他们的联系人。当我尝试任何微软个人帐户时,登录效果很好,能够获取访问令牌,但是当我使用端点(https://graph.microsoft.com/v1.0/me/contacts)进行 Microsoft Graph api 调用时,我得到了401 未经授权的错误。

当我检查请求的响应对象以获取访问令牌时,对于租户,响应包括范围数组:

对于个人帐户,它是:

不知何故,个人帐户没有获得管理员授予的范围的权限。

我注册的应用程序还支持的帐户类型是:

这是我的代码中用于登录用户的配置:

和我发出访问令牌请求时通过的范围:

当我在下面传递令牌时,它会给出错误“请求被拒绝,因为请求的一个或多个范围未经授权或已过期。用户必须首先登录并授予客户端应用程序对所请求范围的访问权限。

我希望获得所有已登录 Microsoft 帐户的联系人。

0 投票
1 回答
1950 浏览

azure - msal-angular 用于单点登录

我正在使用 msal-angular 进行多个 Angular 7 应用程序的身份验证。大多数情况下它工作正常。唯一烦人的问题是,当我第一次在浏览器中从一个应用程序切换到另一个应用程序时,它会弹出要求我“选择一个帐户”。它不会自动使用已登录的帐户。知道如何解决这个问题吗?

0 投票
1 回答
820 浏览

angular - 如何侦听 MSAL-Angular 令牌重新身份验证请求?

因此,我的 Angular 项目中的 MSAL-ANGULAR 部件可以正常工作。问题出在我将会话打开一段时间并且 MSAL 在令牌可能过期时向 Azure AD 调用重新身份验证请求时。这会自动重定向到 Azure AD 进行验证,如果启动路径不是 Azure 中的注册路径,则会失败(例如 localhost:1000/登录会成功,但 localhost:1000/订单不会)。

理想情况下,我不必在 Azure AD 中指定每个路径排列,因此我认为我会拦截身份验证重定向,重定向到默认 URL,然后启动身份验证过程。这是我最初的想法:

我认为身份验证层中的以下代码将为此设置一个钩子,即

但它看起来并没有击中那一块,而是挂钩在 app.routing 中:

任何想法将不胜感激。

0 投票
1 回答
399 浏览

azure - MSAL idToken 没有 upn、配置文件或电子邮件数据?在 idToken 中需要它来进行护照天蓝色广告授权

我在后端有一个 angular8 应用程序,使用官方 msal 包(不是 angular 包,主要包)我使用passport-azure-ad 授权(官方微软包)

我需要在 IdToken 中包含用户的电子邮件地址,因为我无法使用承载策略对访问令牌进行验证。我需要一些方法来通过 UPN 或直接获取该电子邮件地址。

我在不同的 AD 组下尝试了 4 个不同的帐户,到目前为止,只有 1 个 AD 组实际上在 idToken 中显示了一个“电子邮件”或“upn”字段。

应用截图中配置的权限。

登录请求的选项:

我尝试了我能想到的任何变体,我尝试让它们以大写字母(Email,User.Read)开头,就像在屏幕截图中一样,我尝试在范围和 extraScopesToConsent 周围交换它们,我尝试将“upn”放在任何地方但没有运气。

是否有可能:

A:以某种方式在令牌中获取该数据 B:获取另一个令牌,我可以使用具有该数据的后端将其验证为“不记名令牌”?

0 投票
0 回答
661 浏览

angular - MSAL 访问令牌没有声明 - V2.0 端点 B2C

我在 Azure AD B2C 租户 (XXXX.onmicrosoft.com) 中创建了两个应用程序

  1. 前端 - Angular 7(配置为postman
  2. 后端 - Web API - .net core 2.1(配置为childcare.webapi

在此处输入图像描述

Web API 项目是直接的 .NET Core 2.2 API 项目,使用 VS 模板创建。

appsettings.js 文件看起来像

启动代码如下所示:

Postmanapp已授予对childcare.webapi范围的访问权限

在此处输入图像描述

接下来,我编辑了默认的“B2C_1_Signup”策略并添加了“Facebook”身份提供者。我从 azure 门户运行此用户流以获取我的postman应用可用于访问“ childcare.webapi”的访问令牌

在此处输入图像描述

到目前为止,一切都很好。我取回了一个范围为“ user_impersonation”的访问令牌,下面是令牌的样子...

有了这个访问令牌,我成功地childcare.api使用邮递员应用程序调用端点。

在此处输入图像描述

问题

现在我想在我的 Angular 6 应用程序中获取相同的访问令牌。我正在使用流行的图书馆"@azure/msal-angular": "^0.1.2"

下面是我的 MsalModule 配置。

以下是登录方法。

我能够获取令牌,但它对访问 childcare.webapi 无效。它返回给我 404。当我仔细检查令牌时,它缺少user_impersonation范围。

关于缺少对新 b2clogin.com 域的支持存在一个未解决的问题。但是一位用户 (Sakta) 评论说我们可以将 MSAL.js 库与 b2clogin.com 域一起使用。但这对我也不起作用。

任何指针?

更新 1 看起来角度 MSAL 库没有id_token返回access token

0 投票
1 回答
79 浏览

azure-active-directory - 不清楚要使用什么端点,或者在 AAD 中选择什么应用程序类型

我正在编写将在以下平台上运行的加载项 Outlook Online (OWA) Outlook Desktop Client (Outlook 2016) Outlook Mobile (iOS)

插件将调用我们位于本地的内部 WebAPI。

我不清楚的是,我选择的类型Web公共客户端)以及我使用的重定向 URI 是否会有所不同。

我们 WebAPI 的端点是https://ourcompany.com/ourAPI

但是,我看到对于桌面和移动应用程序,门户提供以下选择

msalfa1909ee-89f4-422b-bfea-2e6c00ef1b53://auth https://login.microsoftonline.com/common/oauth2/nativeclient

https://login.live.com/oauth20_desktop.srf

我认为端点是端点是端点;这意味着,只要它是有效的并且提供了正确的信息(例如 clientID、secret 等),无论平台如何,都会在请求时返回一个有效的令牌。

我的初始化代码的开头应该写成这样吗?(我打算使用 MSAL.js)

0 投票
1 回答
883 浏览

javascript - MSAL.js 如何访问在其他选项卡中收到的 SID?

我正在尝试在客户端库中实现 MSAL,到目前为止效果很好。

现在,对于我的下一步,我正在尝试按照https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-sso#automatically-select-account上的文档添加 SSO -on-azure-ad

在本文档中指出,我可以将 sid 声明添加到身份验证请求中,并在登录时在我的第二个选项卡中重用该sid 。

现在我的主要问题是:访问在选项卡 A 中检索到的 sid,然后在选项卡 B 中重新使用它的过程是什么?

0 投票
3 回答
997 浏览

c# - 使用 Azure ActiveDir oAuth2.0 JWT 令牌 Microsoft Graph 的 Asp-Net-Core WebApi 身份验证

我正在通过调整这个 .net core asp-net-core 模板(https://github.com/TrilonIO/aspnetcore-Vue-starter/blob/master/content/Vue2Spa.sln)来模拟 SPA(单页应用程序)

我能够使用 MSAL for microsoft graph 对用户进行身份验证。

如何将我用于 Microsoft 图形的相同令牌用于我的 API(同一个项目,不需要 CORS)。

我尝试的一切都失败了。

StartUp 应该是什么样的?我不想要任何 cookie 身份验证,我已经准备好将 AccessToken 作为 JWT 令牌传递。?

我想在我的 API 控制器中使用 [Authorize]。

SPA --> 获取令牌(它基于我的 clientId 等),通过 AJAX 调用将令牌“Bearer eyJ0eXAiO ....”传递给我的 api 控制器。

0 投票
1 回答
122 浏览

angular - 在 Web API 上验证 Azure AD 令牌的问题

我有 2 个网络应用程序。

  • 站点 A 既是前端 (Angular),又是一个用 .NET 核心编写的 Web API。
  • 站点 B 是用 .NET 核心编写的 Web API。

两个站点中的 Web API 是相同的。认证是一样的。


测试 1:当我要求站点 A 使用它自己的 API 来获取数据(启用站点 A 的身份验证)时,它工作得很好。

测试 2:当我要求站点 A 使用站点 B 获取数据(站点 B 的身份验证关闭)时,它工作得很好。

测试 3:当我要求站点 A 使用站点 B 获取数据(站点 B 的身份验证打开)时,它失败并出现未经授权的错误 401。

这是我用来验证的代码...

所以...

我知道令牌正确通过(因为测试 A)。

我知道被调用的站点 B API 是可访问且正确的(因为测试 B)。

因此,我认为问题在于传递给 Azure AD 的值。我假设 Azure 不认为在站点 A 中获取并在站点 B 中验证的令牌(具有不同的 URI)不是“相同的”,因此未获得授权。

我需要将什么传递给 Azure 才能使其正常工作?

谢谢

0 投票
1 回答
307 浏览

angularjs - 将 MSAL AngularJS 与 Azure B2C 结合使用时,不会调用 tokenReceivedCallback

正在做

进而:

我可以看到这userInfo.isAuthenticated是真的,并且存在一个 id 令牌。

但是,tokenReceivedCallback从不调用。

你能发现问题或给出一些提示在哪里寻找它吗?