azure-ad-b2c - Azure B2C - PublicClientApplication.AcquireTokenByUsernamePasswordAsync 失败
问题描述
我无法使用 .net 核心控制台应用程序中的用户名和密码登录我的 Azure B2C Active Directory。我正在使用 nuget 的 MSAL 库 2.6。我在 GitHub https://github.com/Azure-Samples/active-directory-dotnetcore-console-up-v2上找到了这个示例
我将代码减少到最低限度,如下所示:
public static async Task TestLogin()
{
try
{
var scopes = new[] { "community.member" };
var username = "{user@domain.com}";
var password = new SecureString();
foreach (var c in "{Password}")
{
password.AppendChar(c);
}
var app = new PublicClientApplication("{B2C Application ID}", "https://{Application Name}.b2clogin.com/tfp/xxxxxxx-xxxx-xxxxxxxxxxxx/B2C_1_NativeSigneIn");
var result = await app.AcquireTokenByUsernamePasswordAsync(scopes, username, password);
Console.WriteLine($"Token: {result.AccessToken}");
}
catch (MsalServiceException ex)
{
Console.WriteLine($"{ex.Message} - {ex.ErrorCode}");
}
}
我总是收到以下 MSAL 异常:消息:用户领域发现失败错误代码:user_realm_discovery_failed
解决方案
旧图书馆有一个错误。新版本的 MSAL 具有此修复程序。您可以在此处阅读有关该问题和解决方案的信息:
https://github.com/AzureAD/microsoft-authentication-library-for-dotnet/issues/926
基本上,您需要下载其中一位开发人员从 GITHUB 源编译的包的本地版本,通过将 NuGet 包管理器指向下载的包从您的解决方案中引用该包,然后您需要为新的 Fluent API 重新编写 API对于 MSAL,它会起作用的!就这么简单。
推荐阅读
- mongodb - Mongo聚合为每个文档添加两个相同长度的数组的对应元素
- socket.io - 如何将 socket.io 与 graphql 订阅一起使用?
- c# - 在对话框关闭或执行下一个操作之前,我必须单击多次...如何解决此问题?
- python - 如何从 @cached_property 装饰器中清除缓存?
- laravel - 如何获得创建的作业 ID
- c# - 在 async/await 最佳实践中处理同步方法(一路乌龟)
- javascript - Angular,本地 API,难以在我的应用程序上实现发布请求和返回/显示结果
- wordpress - Wordpress - 旧的 favicon 出现在 Chrome 中
- javascript - 如何从承诺中保存 Spotify 用户访问令牌?
- c++ - '{'标记之前的预期类名,然后在预先声明时无效使用不完整类型'class class_name'