如何使用 MSAL 从 .NET 应用程序使用 SSO 进行身份验证?

问题描述

在我的 .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 的任何建议?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)