尝试使用 AcquireTokenByIntegratedWindowsAuth 时出现 MSAL 错误“parsing_wstrust_response_failed”

2023-12-07

我尝试从 AD 或 Azure AD 获取令牌,但调用 AcquireTokenByIntegratedWindowsAuth 会导致以下结果:

MSAL.Desktop.4.14.0.0.MsalClientException: 错误代码:parsing_wstrust_response_failed Microsoft.Identity.Client.MsalClientException:发送请求时发生错误。 ---> System.Net.Http.HttpRequestException: 发送请求时发生错误。 ---> System.Net.WebException:远程服务器返回错误:(401) 未经授权。 ---> System.ComponentModel.Win32Exception: 系统无法联系域控制器来服务身份验证请求。请稍后再试

根据在 Azure 中注册我的应用程序的团队的说法,我是公共客户,并且有权使用“user.read”

如果您知道会发生什么,我可以向我们公司的 Azure 团队传达一些信息。这可能是我的错,他们的错或MS的错,我只是想知道该向谁投诉。大部分代码是由 Azure 门户生成的,我只是将对 AcquireTokenInteractive 的调用更改为 AcquireTokenByIntegratedWindowsAuth,因为我的最终目标是始终默默地获取令牌。

    public partial class MainWindow : Window
    {
        string graphAPIEndpoint = "https://graph.microsoft.com/v1.0/me";
        string[] scopes = new string[] { "user.read" };

        public MainWindow()
        {
            InitializeComponent();
        }

        private async void CallGraphButton_Click(object sender, RoutedEventArgs e)
        {
            ServicePointManager.Expect100Continue = true;
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

            AuthenticationResult authResult = null;
            var app = App.PublicClientApp;
            ResultText.Text = string.Empty;
            TokenInfoText.Text = string.Empty;

            var accounts = await app.GetAccountsAsync();
            var firstAccount = accounts.FirstOrDefault();

            try
            {
                authResult = await app.AcquireTokenSilent(scopes, firstAccount)
                    .ExecuteAsync();
            }
            catch (MsalUiRequiredException ex)
            {
                System.Diagnostics.Debug.WriteLine($"MsalUiRequiredException: {ex.Message}");

                try
                {
                    authResult = await app.AcquireTokenByIntegratedWindowsAuth(scopes)
                        .ExecuteAsync(CancellationToken.None);
                }
                catch (MsalException msalex)
                {
                    ResultText.Text = $"Error Acquiring Token:{System.Environment.NewLine}{msalex}";
                }
            }


    public partial class App : Application
    {
        static App()
        {
            _clientApp = PublicClientApplicationBuilder.Create(ClientId)
                .WithAuthority($"{Instance}{Tenant}")
                .WithDefaultRedirectUri()
                .Build();
            TokenCacheHelper.EnableSerialization(_clientApp.UserTokenCache);
        }

        private static string ClientId = "<My Client ID>";
        private static string Tenant = "<Our Tenant ID>";
        private static string Instance = "https://login.microsoftonline.com/";
        private static IPublicClientApplication _clientApp ;

        public static IPublicClientApplication PublicClientApp { get { return _clientApp; } }
    }

基于https://github.com/AzureAD/microsoft-authentication-library-for-dotnet/wiki/Integrated-Windows-Authentication,存在许多限制AcquireTokenByIntegratedWindowsAuth方法。

如果您使用自己的用户帐户进行测试,则必须获得您帐户的应用程序的同意。此外,使用此身份验证流程时无法启用 2FA。

对于其他用户,他们需要同意应用程序访问其帐户详细信息,或者租户管理员必须使用Grant admin consent for Tenant门户中的按钮。

此流程仅适用于“联合用户”(例如在 AD 而不是 AzureAD 中创建)。

此流程主要针对桌面应用程序。它仅适用于 .net 桌面、.net core 和 Windows 通用应用程序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尝试使用 AcquireTokenByIntegratedWindowsAuth 时出现 MSAL 错误“parsing_wstrust_response_failed” 的相关文章

随机推荐

  • 如何计算R中特定行的平均值?

    我有一个数据文件 如下例所示 但更大 names num Y1 Y2 William 1 4 71 7 4 William 2 3 75 8 William 3 4 71 7 9 Katja 1 5 83 8 5 Katja 2 5 17
  • VStack 中大 Text 和 TextField 之间的 SwiftUI 神秘间距

    我无法弄清楚为什么我的文本下方有一些空格 struct testView View State private var notes var body some View VStack Text Larg Text font system s
  • 为什么这个值是空的?

    我正在成功地制作 保存和检索我的共享偏好mainActivity 但我无法从我的服务中获取它 由于某种原因 当我尝试从后台服务检索它时 我的共享首选项为空 我在 onCreate 中初始化我的首选项 contactsPrefs getSha
  • AngularJS:链接承诺

    遵循以下建议AngularJS 验证和承诺 我想链接确认对话框 从而一次验证多个步骤 根据用户提供的数据 调用API来查看哪些内容需要用户确认 对于每一个需要确认的步骤 提示用户并让他们决定是否进入下一步 如果任何步骤返回 false 则整
  • 如何替换 perl 中的空格

    chomp myString myString s g 我可以用这两个替换吗 myString s s g 有什么区别吗 请解释 您的第一个代码将从 myString 末尾取出换行符 如果存在 然后删除所有 字符 第二行代码将删除所有空白字
  • 为什么整数 0 等于 PHP 中的字符串? [复制]

    这个问题在这里已经有答案了 可能的重复 相等 双等于 和恒等 三等于 比较运算符有何不同 Why this var dump 0 string 输出这个 bool true 上下文不是 运算符应该转换0 into FALSE and str
  • 删除重写方法中的抛出,编译器在调用时需要一个 try/catch 块

    我有一个子类 并且要重写继承的父方法 我要从方法声明中删除 throws 子句 现在 使用多态性 my 实例的运行时类型应该确定方法实现 然而 当我尝试编译时 编译器抱怨并希望在方法调用周围有一个 try catch 块 就好像正在调用超类
  • 尝试从 PHP 运行 jar

    在阅读了该网站上与我遇到的完全相同的问题相关的一些帖子后 我发现它们都没有给我一个成功的结果 如何使用 PHP 从 Web 服务器运行 jar 从网站上的 PHP 脚本运行 Java 类文件 为什么 exec java jar file j
  • 制作特定结构的矩阵

    请注意 我不知道我错在哪里 但我花了一整天的时间试图解决这个问题 因此 我请求不要将其作为重复问题丢弃 并将其视为与矩阵结构相关的非常具体的问题 我有以下数据框 dput c m q structure list ASK Price c 1
  • 为什么 JCheckBox 上的 setSelected 失去作用?

    有人可以向我解释为什么我失去了选择 由setSelected for JCheckBox当我把JOptionPane进入ItemListener 这是一个错误吗 奇怪的是 如果这个过程被延迟invokeLater setSelected 正
  • Firemonkey:如何定义一个包含另一个组件的组件?

    在 Delphi 下 我想创建一个新的 firemonkey 控件 其中将包含另一个 firemonkey 控件 这并不是真正的问题 因为我可以这样做 constructor TMyComponent Create AOwner TComp
  • 更新对象图时实体框架的断开行为

    我目前正在开发一个使用以下技术的项目 ASP net MVC 表示层 数据服务层 WCF 具有 Automapper 的数据传输对象 TO 层 领域层 POCO 代码优先实体框架 存储库层 实体框架4 3 DbContext 我们使用 DT
  • 使用 EF Core 和 NpgSql 过滤 postgres 中 jsonb 列的整数数组

    我想根据 json 整数数组过滤行 例如 我的表如下所示 Id Name TypeJson 1 Name One 1 2 2 Name Two 2 3 3 Name Three 4 7 其中 Id 是 int 类型 Name 文本 Type
  • 在 Octave 中导入 Java 类

    我一直很难弄清楚如何做到这一点 从八度网站 似乎java类是通过类路径找到的 这个堆栈溢出答案表示 静态java路径 是 动态java路径 但我不确定如何设置静态 java 路径 在我感兴趣的特定情况下 我尝试将 javaplex 包与 O
  • 当pdf加载到iframe时如何阻止下载?

    当iframe加载pdf时自动下载pdf文件 我怎样才能防止这种情况 function dialog dialog autoOpen false modal true resizable false width auto show fade
  • 我的输出没有显示完整的数字,但显示 ??反而

    I m trying to do benchmarking with JMH the benchmarking result did come out but not perfectly 不知何故有 在数字中 是否是我的 IDE 的问题 我
  • 大熊猫的大小和数量有什么区别?

    这就是之间的区别groupby x count and groupby x size在熊猫中 size 是否只排除 nil size包括NaN价值观 count才不是 In 46 df pd DataFrame a 0 0 1 2 2 2
  • 过滤 ElementsCollection

    我正在尝试创建一个函数来过滤ElementsCollection 条件是每个元素的子元素而不是元素本身 这是我想出的 public static ElementsCollection filterByChild ElementsCollec
  • 如何在 Amazon EMR 上安装多个版本的 numpy 以及如何删除早期版本?

    我不明白 Python 如何安装单个包的多个版本 或者为什么当我安装了多个版本时 import package没有给我最新的 我正在使用 AWS linux 和 AWS EMR 中的 AWS 存储库 当我安装 Python 3 6 时 它默
  • 尝试使用 AcquireTokenByIntegratedWindowsAuth 时出现 MSAL 错误“parsing_wstrust_response_failed”

    我尝试从 AD 或 Azure AD 获取令牌 但调用 AcquireTokenByIntegratedWindowsAuth 会导致以下结果 MSAL Desktop 4 14 0 0 MsalClientException 错误代码 p