- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试从 AD 或 Azure AD 获取 token ,但调用 AcquireTokenByIntegratedWindowsAuth 会导致以下结果:
MSAL.Desktop.4.14.0.0.MsalClientException:错误代码:parsing_wstrust_response_failedMicrosoft.Identity.Client.MsalClientException:发送请求时发生错误。---> System.Net.Http.HttpRequestException: 发送请求时发生错误。---> System.Net.WebException:远程服务器返回错误:(401) 未经授权。---> System.ComponentModel.Win32Exception: 系统无法联系域 Controller 来服务身份验证请求。请稍后重试
根据在 Azure 中注册我的应用程序的团队的说法,我是公共(public)客户,并且有权使用“user.read”
知道会发生什么,以便我可以向我们公司的 Azure 团队传达一些信息。这可能是我的错,他们的错或MS的错,我只是想知道该向谁投诉。大部分代码是由 Azure 门户生成的,我只是将对 AcquireTokenInteractive 的调用更改为 AcquireTokenByIntegratedWindowsAuth,因为我的最终目标是始终默默地获取 token 。
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。
对于其他用户,他们需要同意应用程序访问其帐户详细信息,或者租户管理员必须使用门户中的向租户授予管理员同意
按钮在整个租户中授予同意。
此流程仅适用于“联合用户”(例如在 AD 而不是 AzureAD 中创建)。
此流程主要针对桌面应用程序。它仅适用于 .net 桌面、.net core 和 Windows 通用应用程序。
关于azure - 尝试使用 AcquireTokenByIntegratedWindowsAuth 时出现 MSAL 错误 "parsing_wstrust_response_failed",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61958043/
我尝试从 AD 或 Azure AD 获取 token ,但调用 AcquireTokenByIntegratedWindowsAuth 会导致以下结果: MSAL.Desktop.4.14.0.0.
我尝试从 AD 或 Azure AD 获取 token ,但调用 AcquireTokenByIntegratedWindowsAuth 会导致以下结果: MSAL.Desktop.4.14.0.0.
每次运行脚本通过 Powershell 连接到 Azure Ad 时,我都会收到以下错误 Connect-AzureAD : One or more errors occurred.: parsing
我是一名优秀的程序员,十分优秀!