问题标签 [msal]

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 回答
10204 浏览

azure - 用于 Azure AD B2C 和 Xamarin 的 MSAL 或 ADAL 库

截至 2016 年 10 月,Microsoft 身份验证库(MSAL - NuGet 包:Microsoft.Identity.Client)是否仍然是与 Xamarin(iOS/Android)和 Azure AD B2C 服务一起使用的正确/唯一库?此库 (MSAL) 仅作为 alpha 版提供,似乎并未处于积极维护或开发的状态(自 4 月以来)。

有迹象表明 Active Directory 身份验证库(ADAL - NuGet 包:Microsoft.IdentityModel.Clients.ActiveDirectory)旨在作为 Microsoft 的“one-Azure-authentication-library-to-rule-them-all”,它支持 Xamarin;它也在积极维护中,不处于“alpha”或“beta”状态。

了解 Microsoft 过去曾指出 Azure AD B2C 开发人员使用 MSAL 库,是否可以使用 ADAL 库在 Xamarin 应用程序中对 Azure AD B2C 用户进行身份验证?是否有人可以指出我的博客或示例代码,以演示如何执行此操作?

0 投票
2 回答
1425 浏览

azure-active-directory - 管理员同意不适用于 v2 应用程序中的范围 User.Read.All

我从这里下载了 Azure 示例以“使用 v2.0 端点构建多租户守护程序”: https ://github.com/Azure-Samples/active-directory-dotnet-daemon-v2

我在 中注册了应用程序apps.dev.microsoft.com,将应用程序权限范围设置为 User.Read.All,并在代码中的 Startup.Auth.cs 中替换了应用程序 ID 和生成的密码密码。

示例代码运行良好,只是管理员同意授权似乎不起作用。

中的代码AccountController.RequestPermissions()成功构建并发送管理员同意请求。同意页面显示正确的范围:“阅读所有用户的完整个人资料”。提供同意后,我被重定向到https://localhost:44316/Account/GrantPermissions?admin_consent=True&tenant=my-tenant-id,表明授权成功。之后,我还在 Azure 门户上的企业应用程序中看到了该应用程序。

但是,对https://graph.microsoft.com/v1.0/users的调用UsersController.Index仍会导致“403 Forbidden”。Fiddler 中的错误详细信息显示:

"code": "Authorization_RequestDenied", "message": "Insufficient privileges to complete the operation."

该请求中的 JWT Bearer 令牌包含我正确的租户 ID 和一个角色:“User.Read.All”。

我的账号是这个租户的全局管理员,可以在graph.microsoft.io上查询用户。

此响应日期为 6 月 30 日,表明尚无法将 admin_consent 与 App Model v2 一起使用。然而,我下载的示例可以追溯到 9 月下旬,并且准确地显示了这种情况,所以我希望它同时得到支持。

App Model v2 是否已支持 admin_consent?如果是这样,谁能帮我找出问题所在?谢谢。

0 投票
0 回答
1275 浏览

c# - 通过 MSAL 从 Azure AD 获取的令牌立即过期

根据这篇博文,我在我的 xamarin 表单应用程序中使用 MSAL 实现了 Azure AD 身份验证。

它似乎工作正常,它给了我预期的登录对话框,我可以在其中使用我的 AD 帐户登录并返回带有访问令牌的 AuthenticationResult。

但是,当我尝试使用令牌时,我的 API 给了我一个 401-未授权。我尝试[Authorize]在 Azure 中的应用服务上使用该属性并将“请求未通过身份验证时采取的操作”设置为“使用 Azure Active Directory 登录”。但在这两种情况下都失败了。

当我检查它返回的访问令牌时,我注意到 ExpiresOn 属性中包含我请求令牌时的确切日期时间,这可以解释 401,因为令牌将立即过期。

我尝试删除[Authorize]并将 Azure 设置为 Allow all,以便我可以RequestContext.Principal.Identity在我的 API 中检查,但 IsAuthenticated 属性为 false,并且没有其他身份属性包含我的任何信息。

希望有人能够告诉我为什么我的令牌在获得时过期或者我做错了什么,因为我已经坚持了一段时间。

我的代码:

0 投票
1 回答
1959 浏览

android - MSAL UserTokenCache 未在 Android 上保留

我尝试使用 Azure B2C 和 MSAL 对用户进行身份验证,但偶然发现了一些用户体验问题。

当我调试我的应用程序时,我通常不必登录,因为我已经过身份验证并且令牌仍然有效。但是,如果我从 Debug 切换到 Release,然后测试应用程序,AquireTokenSilentAsync 方法似乎无法从 UserTokenCache 检索有效令牌。我的假设是每次关闭应用程序时都会清除 UserTokenCache。不知何故,这在调试模式下不会发生,我猜这是因为缓存在部署之间保持不变。

我以这种方式获得了身份验证结果,但尝试了不同的重载但没有成功。

AuthenticationResult ar = await App.PCApplication.AcquireTokenSilentAsync(App.Scopes, "", App.Authority, App.SignUpSignInpolicy, false);

所以,当我登录时,关闭并重新进入应用程序,我仍然需要再次登录。

我完全知道 MSAL 仍处于预览阶段,但我还没有找到与此行为相关的任何问题。这是一个已知问题吗?是否有可用的解决方法?

查看 MSAL 源代码,我可以清楚地看到 UserTokenCache 正在使用 Android SharePreferences 进行持久性,这在调试模式下完美运行。所以,要么这是一个错误/缺失的实现,要么我没有看到明显的东西..

0 投票
1 回答
380 浏览

azure-ad-b2c - 将令牌或用户名传递给 MSAL 中的 B2C 编辑策略

我试图弄清楚 MSAL 中是否有办法传递当前令牌或用户名以避免提示用户输入用户名和密码(通过两个没有标签的文本框,只有两个空白输入框,不理想) 在继续执行 Azure AD B2C 编辑策略之前。

0 投票
1 回答
469 浏览

c# - 我应该如何确定 MSAL 帐户是否具有基于 Exchange 的电子邮件系统?(有一个例外)

我正在使用 MSAL,并且有一个用户收到以下错误:

该代码是默认的 MSAL 演示代码:

原来集成是这样的:

  1. 这是一个混合交换系统
  2. 某些邮箱位于 Office 365 上。
  3. 一些邮箱位于本地。
  4. 其他邮箱位于第 3 方邮件系统(Intermedia)上(目录通过自定义脚本同步到 AD Connect)

问题

我应该如何针对上述情况进行防御性编码?(或类似的混合情况)?

0 投票
1 回答
1228 浏览

azure - 如何自定义 MSAL v2 myapps.microsoft.com 中显示的应用程序图标?

与 Azure AD 门户不同,我可以将图标分配给各个应用程序(215 像素 x 215 像素),MSAL 门户仅允许 50 像素 x 50 像素的图像。

更改 MSAL 门户中的图像不会导致任一应用程序中显示的图标发生更改

门户:

我的 AzureAD 应用程序和 MSAL 融合应用程序都是 Web/Trusted 应用程序,并且具有相同的流程。

(本机客户端,不会出现在任一端点版本的门户中)

此外,在 myapps.microsoft.com 中配置时,MSALv2 应用程序返回以下错误。

在此处输入图像描述

0 投票
1 回答
236 浏览

facebook - 理论上,Azure AD 或 B2C 是否可以利用 Facebook SDK 进行身份验证?

我有一个 iOS 应用程序,我的客户通过以下方式登录 Facebook

  1. 网络浏览器
  2. 设置中的本机配置
  3. Facebook 应用程序/信使

当我按照使用 MSAL 或 ADAL 的说明进行操作时,似乎我只使用 Safari 浏览器进行身份验证。

  • 有什么方法(即使在理论上)可以利用已经存储在选项 2 或选项 3 中的凭据?

  • MSAL / ADAL 需要什么来利用选项 2 或 3?

0 投票
1 回答
7577 浏览

microsoft-graph-api - 如何使用 ConfidentialClientApplication 对 Graph 执行 AppOnly 请求(Group.ReadWrite.All)

我一直在使用 MSALMicrosoft.Identity.Client.ConfidentialClientApplication来执行仅限应用的 Microsoft Graph - Groups 操作。

我被困在下一步:

我得到错误failed_to_acquire_token_silently

我得到错误invalid_scope

不确定我应该继续哪个方向。

笔记:

  • 使用PublicClientApplication相同的代码可以正常工作
  • 该应用同时具有 AppOnlyGroup.ReadWrite.All和 DelegateGroup.ReadWrite.All权限
  • PublicClienApplication一个不需要的 UI 对话框...
0 投票
1 回答
1881 浏览

e2e-testing - 如何使用 Microsoft 身份验证库 (MSAL) 进行自动化测试

如何使用 MSA 或MSAL针对同一测试套件中的业务和消费者测试帐户测试客户端代码,而无需任何用户交互?Windows 集成身份验证不是一个选项,即使我在域上运行,也没有在 MSAL 中实现。

对于 ADAL,有这篇博客文章Using ADAL .NET to Authenticate Users via Username/Password,但我的理解是不鼓励使用此选项,将来可能会禁用此选项。另外,我不能将其用于消费者帐户。