问题标签 [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 投票
0 回答
212 浏览

node.js - 在 Angular 中使用 msal 和服务器端渲染

我一直在使用 msal.js 在我的 Angular 应用程序中进行身份验证。这对于使用ng serve. 不幸的是,当我尝试使用 node 运行服务器构建时,这个库给了我一个错误。此构建是使用生成npm run build:prod并由使用提供服务的npm run server。尝试使用节点提供此服务后,出现以下错误:

我可以理解为什么会发生错误,但是由于需要这个第三方库,我无法从项目中删除这个包。我尝试只加载这部分代码,app.browser.module.ts但是在尝试在浏览器中运行服务器端版本时出现注入错误。

我希望有人能解释我如何在使用这个第三方库的同时制作这个项目的可运行服务器端构建。

0 投票
0 回答
479 浏览

reactjs - 当我想在登录后重定向时使用 react-azure-adb2c 我得到状态不匹配并看到一个空白页面,如何解决这个问题?

在reactjs中使用自定义策略和react-azure-adb2c(https://www.npmjs.com/package/react-azure-adb2c)和SPA,问题是登录后(使用单独的自定义策略)我成功登录,并获取正确存储在会话中的 id 和访问令牌。应用程序上有一个更改密码的链接,该链接重定向到另一个自定义策略,该策略也可以正常工作,但在完成并重定向到登录页面后,我收到状态不匹配错误,因为新状态返回为空,任何关于如何操作的想法要解决这个问题?同样在 html 上显示您需要启用 JavaScript 才能运行此应用程序。但是当我刷新页面时,它按预期工作

在此处输入图像描述

0 投票
0 回答
454 浏览

identity - Microsoft MSAL.js 包括 domain_hint 两次

我正在使用 msal.js 并希望用于domain_hint直接登陆 IdP 页面。在我设置extraQueryParameters: {domain_hint: 'abc'} msal.js 后,确实将 添加domain_hint=xyz到查询字符串,但它还domain_hint=organizations在导致 B2C 显示我喜欢跳过的 IdP 选择页面之前添加了域。

网址

索引.html

0 投票
1 回答
224 浏览

javascript - Msal 与 RequireJS

好奇是否有人将 MSALjs 与 RequireJS 一起使用。我似乎无法让出口正确注册。我可以看到 msal.js 文件已加载到 Visual Studio IDE 和 Chrome 源中。该项目使用 RequireJS 2.3.6 和 MSAL 1.1.3。

需要.config.js

main.js

任何帮助将非常感激。我已经坚持了几天了。

这就是它应该如何阅读。谢谢你,杰森纳特!

需要.config.js

main.js

0 投票
1 回答
2762 浏览

azure-active-directory - 来宾用户的角色在 Azure Active Directory 身份验证令牌声明中不可见

我正在构建一个使用 Microsoft 身份验证库 (MSAL) 来管理用户身份验证的应用程序。我一直在测试邀请用户并使用 AAD 企业应用程序向他们应用应用程序角色。当来自应用程序目录之外的用户(通用 microsoft 帐户)登录到应用程序时,他们不会在其身份验证令牌中收到任何角色声明。

我尝试关闭外部协作设置中显示“来宾用户权限受限”的设置,但这并没有什么不同。

我会很感激任何帮助,谢谢。

0 投票
1 回答
984 浏览

azure-ad-b2c - 作为 AAD B2C msal.js 代码的一部分返回电子邮件地址

如何使用在响应中返回电子邮件地址的 msal.js 正确配置和编码对 AAD B2C 的调用?

背景

我正在寻找将 JavaScript 集成到 R 仪表板解决方案 Shiny 中,它需要身份验证解决方案的 JavaScript 集成。仪表板必须针对 Azure Active Directory B2C 进行身份验证。Shiny 本质上是一个 SPA 应用程序。

AAD B2C 配置

我有一个 AAD B2C 用户流程:

我有一个 AAD B2C 应用程序:

此外,我使用 App Registrations(预览版)为 Microsoft Graph 添加了一些 api 权限,并且都已获得管理员同意。

当前的 JavaScript

从以下示例修改代码:

MSAL.js lib v1.1.3用于支持以下定制代码。

当前响应

从这里我得到一个显示在控制台中的 Account 对象,如:

0 投票
1 回答
569 浏览

asp.net-web-api - WebAPI 2 使用 MSAL 授权角色

我正在尝试将我们的安全架构从 ASP.NET Core Identity 迁移到带有 MSAL.js 的 Azure AD V2。我们在 ASP.NET Core Identity 实现中使用了很多角色,并使用 Web 应用程序在数据库中管理信息。我放弃的模式与这个相似。

https://www.dotnetcurry.com/aspnet-core/role-based-security

带有 MSAL 的 Azure AD 正在运行。正在创建和传递令牌,并且使用通用[Authorize]属性装饰的本地 Web API 端点正在按照您的预期得到兑现。用 装饰的 Web API 端点[Authorize(Roles= "Fee, Foo, Fi, Fum")]抛出 401 未经授权的错误。

我不知道从这里去哪里。我是否为 Web API 编写 CustomAuthorize 属性覆盖并返回数据库并获取角色。(可能根据电子邮件地址将数据库定义的角色与用户匹配)

或者

有没有办法使用 Azure AD V2 本机实现角色?

我不确定从这里开始的最佳行动方案是什么。文档和代码示例似乎有限。将一个 AD 用户放入一个组中并让该组被视为 Web API 中的角色肯定会很好。另一方面,在 Web 应用程序的范围内处理角色委托是很好的。

任何建议、经验或兴趣将不胜感激。

回答

跟进我的问题。@Marc,您是对的,在查看了角色不存在的令牌之后。将角色添加到令牌似乎非常简单。您需要修补图形模式以包含它们,配置角色并根据需要通过 AAD 将它们分配给用户。

或者这就是它乍一看的样子。在深入挖掘之后,它需要 P1 或 P2 Enterprise 许可证,每位用户每月只需额外支付 6 美元。这实际上将使我们在云中托管电子邮件的成本增加一倍。

或者,我为 WebAPI 编写了一个 CustomAuthAttribute,并在服务器后端将用户和角色绑定在一起。仍然可以通过 Web 应用程序管理角色,并且用户仍然可以使用 Active Directory 凭据登录。

0 投票
1 回答
774 浏览

azure - 如何获取 MSAL Angular 0.1.4 版来检测 SSO?

MSAL for Angular 文档将我带到 MSAL 的 JavaScript 文档

https://www.npmjs.com/package/@azure/msal-angular

https://github.com/AzureAD/microsoft-authentication-library-for-js/wiki/FAQs Q4。如何使用 MSAL.js 在我的应用程序中进行单点登录

https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-sso

“不同域上的应用程序当应用程序托管在不同域上时,域 A 上缓存的令牌无法被域 B 中的 MSAL.js 访问。

这意味着当在域 A 上登录的用户导航到域 B 上的应用程序时,他们将被重定向或使用 Azure AD 页面提示。由于 Azure AD 仍然具有用户会话 cookie,因此它将登录用户并且他们不必重新输入凭据。如果用户在与 Azure AD 的会话中有多个用户帐户,系统将提示用户选择相关帐户进行登录。”

Angular API 的 MSAL 具有 extraQueryParameters 作为字符串类型,这与 JavaScript 指令不同。loginRedirect(consentScopes?: string[], extraQueryParameters?: string): void;

目前一直提示用户登录。如何在不提示用户的情况下让 MSAL for Angular 检测存在的 SSO?

0 投票
1 回答
6711 浏览

javascript - msal.js 包的 loginRedirect() 方法导致 'TypeError: Cannot read property 'then' of undefined'

我目前正在使用 msal.js 包,以便我可以为我自己的 Vue.js 应用程序使用 azure 授权。到目前为止,我已经创建了一个 Teams 应用程序,可以在其中访问我的 Vue.js 网站,该网站使用 ngrok 进行隧道传输。

我在 Vue.js 中的代码如下所示(为了安全起见,我在这个 stackoverflow 帖子中用占位符替换了 clientId 和 authority):

基本上它所做的是设置要连接的天蓝色应用程序,然后尝试通过 loginRedirect() 方法静默登录。

但是当我尝试运行此代码时,在 loginRedirect() 方法处脚本停止并且我将收到错误消息:

在此处输入图像描述

由于 loginRequest 不为空,我不确定错误指的是什么。

这里可能是什么问题?

0 投票
2 回答
8544 浏览

angular - MSAL、Angular 和 ASP.NET Core 的 CORS 错误

我正在尝试构建一个 ASP.NET Core webapi + Angular 网站,用户可以在其中使用 Microsoft 个人或工作或学校电子邮件登录。我按照此处描述的说明进行操作: https ://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/README.md

但是遇到这个问题,

  1. 角度网站加载,主页上的受保护组件触发登录过程

  2. 微软网站出现

  3. 我登录

  4. 浏览器加载以下网址:https://localhost:44321/#id_token=...&state=...

  5. 网站再次重新加载(登录后第二次)

  6. 我看到以下错误

    从源访问“https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=...”处的 XMLHttpRequest(重定向自“https://localhost:44321/Environment/GetUserInfo”) “https://localhost:44321”已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。

使用 Visual Studio 2019 16.4.2 和 chrome 79.0.3945.88 在本地调试时

任何想法?
谢谢

我已经使用创建了我的项目


并使用以下重定向 URI在 Azure.Portal 身份验证中创建了一个应用注册

  • https://localhost:44321/signin-microsoft
  • https://login.microsoftonline.com/
  • http://localhost:30662/
  • https://localhost:44321/signin-oidc
  • https://localhost:44321/

检查所有“公共客户端的建议重定向 URI”
注销 URL:https://localhost:44321/signout-callback-oidc
隐式授权:访问令牌和 ID 令牌
Live SDK 支持:是
默认客户端类型:否

证书和机密
我创建了一个客户端机密,因为我尝试使用 Microsoft 提供程序(请参阅下面的注释代码)然后尝试使用 AzureAd

API 权限
Microsoft.Graph User.Read

公开 API
范围 = [应用程序 ID URI]/access_as_user,仅限管理员
客户端应用程序 = [CLIENT_ID_FROM_AZURE_PORTAL],范围以上

服务器端
appsettings.json

启动.cs

客户端
app.module.ts

包.json

登录后 Chrome 出现错误