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

microsoft-graph-api - 使用 MSAL 获取 Graph API 的令牌?

我正在尝试使用 MSAL (1.0.304142221-alpha) 通过客户端凭据流获取 Microsoft Graph API 的令牌。我的代码如下所示:

第 2 行引发异常:“AADSTS70011:为输入参数‘范围’提供的值无效。范围 Mail.Read 无效。”。Graph API 参考似乎引用“Mail.Read”作为所需范围。

Azure AD 中的应用程序是具有单个密钥的 Web 应用程序。该应用程序为 Microsoft Graph 设置了“读取所有邮箱中的邮件”应用程序权限。

任何人都可以阐明发生了什么吗?谢谢 :)

0 投票
2 回答
3817 浏览

xamarin - 使用 Microsoft 身份验证库 (MSAL) 时注销不起作用

我有一个 Xamarin.Forms iOS/Android 应用程序,并且必须针对 Microsoft Azure B2C AD 对用户进行身份验证。

我添加了 Microsoft.Identity.Client NuGet 并将其用于身份验证。

登录工作正常,我可以使用返回的令牌来调用我们自己的 Azure 托管服务。

问题是当我尝试注销用户时,它不能按预期工作。

如果用户在终止应用程序后立即注销,则下次启动应用程序时,登录屏幕将按预期显示。

要杀死 iOS 上的应用程序,我会通过双击主页按钮并向上滑动来打开应用程序切换器。

但是,如果用户没有终止应用程序,而是按下我的登录按钮(触发对 AcquireTokenAsync() 的调用),则 Microsoft.Identity.Client 不会显示登录屏幕,而是立即返回一个有效令牌,并且应用程序是能够将此令牌用于服务调用,即它是一个有效的令牌。

下次启动应用程序时,令牌不再存在,并且出现登录屏幕。

奇怪的是,当我从GitHub/active-directory-b2c-xamarin-native运行示例时,我看到了相同的行为。所以我怀疑这是微软 MSAL 组件中的一个错误。

根据示例注销应该简单地通过调用来完成

我也尝试过添加

没有任何变化。

有什么建议么?

0 投票
1 回答
1751 浏览

xamarin - Microsoft 身份验证库 (MSAL) 永远不会从 Android 上的 AcquireTokenAsync() 返回

我有一个 Xamarin.Forms iOS/Android 应用程序,并且必须针对 Microsoft Azure B2C AD 对用户进行身份验证。

我添加了 Microsoft.Identity.Client NuGet 并将其用于身份验证。

它在 iOS 上运行良好,但在 Android 上,相同的代码永远不会从 AcquireTokenAsync() 返回。

登录 UI 按原样显示,用户名和密码被接受,MSAL 库提供的 UI 按原样显示,但调用await AcquireTokenAsync()永远不会返回。

该代码位于应用程序核心项目的 PCL 中。

我已经在 Android 4、5 和 6 设备上尝试过。

我知道 MSAL 仍处于 alpha 阶段,我只是想确认一下是否是由于这个原因,或者我可能做错了什么。

0 投票
1 回答
1100 浏览

xamarin - 如何在 .NET 的 Microsoft 身份验证库 (MSAL) 中获取脱机令牌?

我有一个 Xamarin.Forms iOS/Android 应用程序,并且必须针对 Microsoft Azure B2C AD 对用户进行身份验证。

我添加了 Microsoft.Identity.Client NuGet 并将其用于身份验证。

登录工作正常,我可以使用返回的令牌来调用我们自己的 Azure 托管服务。

该应用程序还需要脱机工作,并且根据我从Azure AD B2C 预览中了解到的情况:令牌参考如果我提供范围,我应该能够获得具有更长寿命的“刷新令牌” offline_access

但是,如果我确实提供了此范围,则库会引发offline_access不受支持的异常。

我的问题是:这是因为 MSAL 目前根本不支持offline_access,还是我应该以不同的方式获得相同的支持?

0 投票
2 回答
719 浏览

onedrive - 如何使用 MSAL 连接到 Onedrive?

我正在尝试使用 MSAL 令牌连接到 OneDrive,但它返回 error="invalid_token", error_description="Auth error"

这是我的代码:

有人知道我在做什么错吗?

0 投票
1 回答
1062 浏览

c# - Xamarin.iOS 异步 ViewDidLoad

我正在使用 Microsoft 身份验证库和 Azure AD B2C 为我的移动应用程序提供登录名。有了它,我可以提供一个带有异步事件处理程序的按钮,该处理程序将启动登录过程:

首次打开应用程序时,我需要能够使用AcquireTokenSilentAsync. 我看过很多文档说你永远不应该在 void 返回方法上使用异步,除非它是一个事件处理程序,但在这种情况下我需要在ViewDidLoad(). 如果我吞下任何例外,这是可以接受的吗?

0 投票
2 回答
1017 浏览

azure-active-directory - 使用 Microsoft Graph API 和 MSAL 身份验证在 OneDrive 上保存文档

我的同事和我正在开发的应用程序会生成一些 PDF 文件并将结果流式传输回客户端。此 MVC 应用程序仅针对一个特定客户。

这个想法是将 PDF 文件集中导出到 OneDrive (for Business) ,以便客户可以随时随地在任何设备上查看文档。

是否可以将 Microsoft Graph API 与 msal 身份验证(v2.0 端点)结合使用来完成此操作?
我们可以将 OneDrive for Business 视为小型企业的“中央存储”解决方案吗?

谢谢你的任何建议。:)

0 投票
1 回答
341 浏览

.net - Microsoft 身份验证库 (MSAL) 在 AcquireTokenAsync() 之后从不显示 B2c

之后AcquireTokenAsync,我希望 MSAL 重定向到 B2C 页面。相反,屏幕变黑,并且该方法永远不会返回。调试器显示程序停止在AcquireAuthorizationAsync,调用时returnedUriReady.Wait() 这是什么原因?

编辑:

我尝试将 MSAL 示例移植到 F#: https ://github.com/bergey/active-directory-b2c-xamarin-native

它停止的呼叫是

https://github.com/bergey/active-directory-b2c-xamarin-native/blob/fsharp/FSharp-PCL/WelcomePage.fs#L19 B2C 端点与示例 中的相同,按预期工作。

0 投票
1 回答
822 浏览

c# - 在具有 Azure AD B2C 和自定义策略的 Xamarin Forms Windows 应用程序中使用 AcquireTokenAsync() 时的连接问题

我正在使用 MSAL 将我的 Xamarin.Forms-Windows 8.1-App 连接到带有自定义 SignInSignUp 策略的 Azure AD B2C(使用自定义电子邮件地址和密码登录用户)。针对 Azure AD 的“正常”身份验证(没有自定义策略)工作正常,但是当我使用该策略时,消息“我们现在无法连接到您需要的服务。请检查您的网络连接或稍后再试一次。” 每次提供凭据后都会出现(直接在对话框中)。由于对话框没有正确完成,我没有检索任何异常或 AuthenticationResult,因此我无法确定具体问题(互联网连接本身不是问题)。

注意:我也在 Xamarin.Forms-UWP-App 中尝试过这个,这导致我遇到同样的问题。在 iOS 下,它工作正常,对话框完成并正确关闭。

NuGet 版本:MSAL (Microsoft.Identity.Client):1.0.304142201-alpha Xamarin.Forms:2.3.2.118-pre1

那是我的代码(简化):

对此有什么想法吗?

提前致谢!

问候,
马塞尔

0 投票
0 回答
605 浏览

c# - 为什么在获得管理员同意后使用范围 user.readwrite.all 时出现错误 AADSTS65001

我正在使用 azuread 创建一个 c# Web 应用程序。该应用程序将让 Azure 广告管理员管理租户的用户。为此,我需要登录用户的租户的特定授权。

我的代码适用于大多数范围,如“user.readwrite”和“directory.readwrite.all”。但是当我添加范围'User.ReadWrite.All'时,我收到以下错误:

AADSTS65001:用户或管理员未同意使用 ID 为“客户端应用程序 ID ”的应用程序。为此用户和资源发送交互式授权请求。

有问题的用户是来自https://apps.dev.microsoft.com/的应用程序的所有者 在这个应用程序中,我添加了范围: Mail.Send 、 User.Read 、 User.ReadWrite 、 Directory.ReadWrite.All 和 User .ReadWrite.All。对于最后 2 个范围,需要管理员同意。

但是要强制管理员同意,即使用户是所有者。我使用此 URL 让我的管理员和租户中的所有用户同意具有上述范围的应用程序。

login.microsoftonline.com/common/adminconsent?client_id=客户端应用程序 ID &state=adminconsentstate&redirect_uri=我本地 webapp 的 uri

在 Web 应用程序中,我使用 Microsoft 端点 v2.0 连接 Azuread。

login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=客户端应用程序 ID &response_mode=form_post&response_type=code+id_token&scope=openid+email+profile+offline_access&state=OpenIdConnect.AuthenticationProperties%3d...&prompt=select_account&redirect_uri=重定向网址&post_logout_redirect_uri=注销重定向网址

我使用以下代码获取 Accesstoken。

请求 Accesstoken 并使用范围“User.ReadWrite.All”时,我收到上面的错误“AADSTS65001”。当我删除范围“User.ReadWrite.All”时,我可以查看用户、获取 DirectoryRoles 和组织/租户。

奇怪的是,范围“Directory.ReadWrite.All”也需要与 Microsoft 的“User.ReadWrite.All”相同的管理员同意。

资源:

http://graph.microsoft.io/en-us/docs/authorization/permission_scopes

任何解决我的问题的帮助将不胜感激。

谢谢。