问题标签 [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 回答
480 浏览

azure - 如何在不登录的情况下通过 https 连接识别加入 Azure Active Directory 的设备

我有一个用 .net core 2.2 制作的 Web 应用程序。我的目标是将 Web 应用程序公开给只有 Azure AD 加入而没有任何 UI 登录的主机列表。
在项目开始时,我得到了几台混合加入的 PC,因此我可以使用 System.Net.Dns 来查找主机名并将这些主机列入白名单。它工作正常。
我现在遇到问题,仅加入 AAD 且我们的域控制器不会返回主机名的新 PC。
我的问题是如何获取那些加入 AAD 的 PC 的主机名?我需要在我的应用程序中使用这些名称,因为它告诉了 PC 的位置。Azure 中是否有任何 API 可以通过提供 IP 地址返回某个租户的设备信息?

0 投票
1 回答
936 浏览

azure-active-directory - msal-angular:如何要求用户再次登录以在您的应用程序上进行重要操作?

我正在使用 msal-angular 针对 azure Active Directory 验证我的 Angular 应用程序。它工作正常。

对于一些重要的应用程序操作,例如签署文件,应用程序出于安全原因需要要求用户再次认证。

在 msal-angular 文档中,它指出:

但我不知道该怎么做,也找不到任何例子。

0 投票
1 回答
643 浏览

azure-active-directory - 如果使用 msal.js,在登录过程中会丢失“让我登录”消息

语境

我正在开发一个浏览器应用程序,它使用 msal.js 库来允许 Azure Active Directory 帐户访问我们的网站。该应用程序已正确设置了 clientId 和范围,并且成功使用了 loginRedirectacquireTokenSilent

问题

我面临的问题是我无法保持会话打开,因为我没有看到 Keep Me Signed In 消息 (KMSI),所以我无法回答“是”并使AADSSO cookie 持久化。出于这个原因,在登录过程之后,如果浏览器关闭,我需要再次登录。

期待

如果我使用 msal.js 库从我的网站重定向到 Microsoft 登录,我希望看到 KMSI 消息以启用持久会话(出于某种原因,我可以看到是否直接转到 login.microsoftonline.com)

在此处输入图像描述

对不起西班牙语:它说你想保持会话打开吗?否/是

问题

如何使用 msal.js 启用 KMSI?

0 投票
1 回答
337 浏览

azure - 使用 msal 的 Azure AD B2C 邀请链接

我在我的 Angular 应用程序 (SPA) 中使用@azure/msal-angular库。现在我们需要添加一个 B2C 自定义策略,以通过电子邮件 ID 向用户发送注册邀请。

我找到了Invitation custom policy Sample,但它使用 .net 生成令牌和要发送到用户电子邮件的 URL。我通过替换必要的细节来使用相同的东西并试一试。

我想在msal中实现token和link的生成。有人可以分享实现这一目标的必要条件吗?

前端 = Angular 7
后端 = Java 8(使用 java 的 Azure 函数应用程序)

编辑

正如 Tom 所提到的,我尝试使用 jjwt 在 Java 上创建 JWT 令牌。但我仍然需要的是如何在身份体验框架中获取与生成的策略密钥相关的私钥。请分享有助于我使用 Java 实现这一目标的想法。

0 投票
1 回答
275 浏览

azure - 如何在 Vue / Hapi JS App 中使用 AzureAD 进行身份验证

我们在 Azure 门户上注册了一个应用程序,我们希望MSAL.js在前端和后端hapi-auth-jwt2使用jwks-rsa来对用户进行身份验证。后端不是托管在 Azure 上,而是托管在我们自己的 MySQL 服务器上。

根据这个示例active-directory-b2c-javascript-msal-singlepageapp,我们可以使用MSAL.js静默方式或弹出窗口来登录并获取 ID 和访问令牌。然后,我们像这样将访问令牌附加到 http 标头,并向我们的后端路由Vue.prototype.$http.defaults.headers.common['Authorization'] = 'Bearer ' + token发送请求。当我们从客户端访问路由时,身份验证策略会启动并尝试使用从公共https://login.microsoftonline.com/common/discovery/keys检索到的密钥来解码令牌。axios/loginjwtjwks-rsa

问题是/login来自的响应带有一个401 (Unauthorized)res.headers.www-authenticate: "Bearer error=\"Invalid token\""

当我们将访问令牌复制/粘贴到 jwt.io 中时,我们注意到我们解码的标头对象由typnoncealg、组成x5tkid并且签名返回为无效。此外,我们的应用程序注册User.Read当前已在所需权限下选择了 Microsoft Graph,但我们将其删除。

为了测试问题是否出在我们的 JWT 策略中,我们将 ID 令牌而不是访问令牌传递给了 Bearer。JWT 解码了令牌,但响应返回res.headers.www-authenticate: "Bearer error=\"Invalid credentials\""

我们的问题是:

  1. 是否可以在不调用 Graph API 的情况下验证访问令牌,我们如何做到这一点?
  2. 如果上述方法不可行,我们可以使用 ID 令牌对用户进行身份验证吗?这将如何工作?
  3. 如果我们可以在不调用 Graph API 的情况下验证访问令牌,那么https://portal.azure.com/中的设置应该是什么?
0 投票
1 回答
212 浏览

microsoft-graph-api - 通过 msal.js 从经典 JavaScript 调用 Graphi API

我正在尝试通过 msal.js 进行静默登录,然后尝试调用图形 api,但总是出现 403 错误。当我通过 jwt.ms 解密我的访问令牌时,我可以看到受众是正确的,但范围显示错误。希望有人能帮助我。

我的代码

我的解码令牌 在此处输入图像描述

我的应用权限 在此处输入图像描述

0 投票
2 回答
1678 浏览

azure-active-directory - 隐式授权流中的 ID 令牌与访问令牌

我想澄清一下如何在隐式授权流程中使用 ID 令牌和访问令牌。我有一个使用 MSAL.js 的 Angular SPA 包和一个 Web API。API 不调用任何外部服务,例如 MSFT Graph。后端仅使用来自 JWT 的角色声明来为我们的 API 功能建立 RBAC 授权。

该文档说: https ://docs.microsoft.com/en-us/azure/active-directory/develop/id-tokens

id_tokens 作为 OpenID Connect 流的一部分发送到客户端应用程序。它们可以与访问令牌一起发送或代替访问令牌发送,并由客户端用于对用户进行身份验证。

ID 令牌应该用于验证用户是否是他们声称的用户并获取有关他们的其他有用信息 - 它不应该用于代替访问令牌进行授权。

此文档显示了一个身份验证流程,其中使用 ID 令牌而不是访问令牌调用 Web API: https ://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-implicit-授权流

此示例代码也发送 ID 令牌(调用自己的 Web API 示例): https ://github.com/Azure-Samples/active-directory-javascript-singlepageapp-dotnet-webapi-v2

示例后端根据发布它的应用程序的客户端 ID 验证 ID 令牌受众。

鉴于我们的 API 是令牌的唯一消费者,我们应该使用 ID 令牌还是访问令牌?

0 投票
0 回答
338 浏览

angularjs - 是否有任何简单直接的方法来模拟\测试 MSAL JS $rootScope.$on("msal:acquireTokenFailure") 事件?

我正在尝试调试一些 JS 代码以静默获取令牌。

但是我需要进入这个处理acquireTokenFailure事件的特定函数:

是否有任何直接的方法可以手动使令牌过期,以便我可以进入上面的 JS 函数?

顺便说一句:我正在使用这个特定于 Angular JS 的示例项目MsalAngularjsDemoApp 。

我看到有人问过@MSAL GitHub repo 这样的问题,但到目前为止还没有令人满意的答案......

0 投票
2 回答
1073 浏览

azure-active-directory - MSAL - userIdentifier 与 idToken.oid

我正在使用 MSAL 针对 Microsoft Azure AD 验证用户,并获得了一个有效的令牌。

MSAL 库将一个对象交还给我,该User对象包含一个名为userIdentifier.

这是一个字符串,而不是 GUID。

文档说要使用一个称为oid唯一标识整个 Microsoft 身份平台的用户的字段。我在User.idToken.oid.

如文档所述,此值是 GUID。

我的问题是,这是什么User.userIdentifier,我应该使用它吗?我需要知道在数据库端存储什么以将此本地用户与 Azure AD 用户联系起来。

0 投票
1 回答
1260 浏览

javascript - 无法在 React Native App 中使用 localStorage 作为缓存位置

我正在使用 expo-cli 开发一个 React Native 应用程序。我正在使用 ADFS 对应用程序中的用户进行身份验证,特别是,我正在使用 MSAL.js。我已经在网络上进行了身份验证,但是,我无法让应用程序在 iOS 或 Android 上运行。我收到错误消息:“提供的缓存位置无效。提供的值:localStorage。可能的值是:localStorage、sessionStorage。”

我尝试使用 sessionStorage 而不是 localStorage,但我得到了同样的错误,除了它告诉我提供的值是 sessionStorage。

我在这里找到了一个有人也遇到类似问题的线程:MSAL UserAgentApplication: Local storage not working。我尝试了解决方法,但随后出现错误:“未定义不是构造函数(评估'new Msal.Storage(“localStorage”)')”。

如果我尝试调用 Msal.Storage("localStorage"),它会告诉我 msal.Storage 不是函数。

我还尝试从我的配置中显式地将值传递给 UserAgentApplication 函数,而不是传递配置本身:

这是我认为问题所在的代码片段:

我希望对 UserAgentApplication 的调用能够在 iOS 和 Android 上正确使用 localStorage 作为缓存,但情况似乎并非如此。不过,该应用程序可以在我笔记本电脑上的浏览器中完美运行,没有任何缓存/本地存储问题。是否有任何不需要 Msal.Storage 的解决方法/修复?任何帮助深表感谢!