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

时间:2020-12-23 01:52:50

标签: azure-active-directory single-sign-on openid msal

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

0 个答案:

没有答案