在我的 .NET 控制台应用程序中,我使用以下代码通过 MSAL 库登录到 Azure AD:
string[] scopes = new string[]
{
"User.Read"
, "GroupMember.Read.All"
};
AuthenticationResult authResult = null;
var app = Program.PublicClientApp;
var accounts = await app.GetAccountsAsync();
var firstAccount = accounts.FirstOrDefault();
try
{
authResult = await app.AcquireTokenSilent(scopes, firstAccount)
.ExecuteAsync();
}
catch (MsalUiRequiredException e)
{
try
{
authResult = await app.AcquireTokenInteractive(scopes)
.WithAccount(accounts.FirstOrDefault())
.WithPrompt(Prompt.SelectAccount)
.ExecuteAsync();
}
catch (MsalException msale)
{
[...]
}
}
catch (Exception e)
{
[...]
}
}
对于不使用 SSO 的客户,上述代码运行良好。
但是,相同的代码不适用于使用 SSO 的客户(至少这是客户声称的)。在“标准”MS 登录对话框(“选择和帐户”)中选择帐户时,会显示“带您进入组织的登录页面”消息,然后显示另一个(我认为是自定义)对话框,要求用户名和密码。输入有效凭据后,应用程序会生成以下异常: “基于浏览器的身份验证对话框未能完成。原因:由于语法无效,服务器无法处理请求”。
关于导致异常的原因以及如何避免 id 的任何建议?