在基于 Webview 的 OpenID Connect 身份验证中禁用 Kerberos

问题描述 投票:0回答:1

我正在使用 IdentityModel.OidcClient 根据 Microsoft Entra ID 对 WinForms 应用程序中的用户进行身份验证。我正在使用基于 WebView 的方法。

效果很好。太厉害了。

基本上,登录页面不会询问我的用户名/电子邮件或密码。它只是无缝地(提示..)让我使用我当前登录的 Windows 帐户登录。

我猜测这是因为当前登录到运行 WinForms 应用程序的计算机的 Windows 用户实际上是我尝试进行身份验证的租户中的有效用户。因此,Microsoft 的

Seamless SSO
启动并使用 Kerberos 来对我进行身份验证。这是一个非常酷的功能,但并不总是我想要的。

在某些情况下,我可能想明确选择不同的用户进行登录。 我不想在整个应用程序/租户的 Entra ID 端禁用无缝 SSO,因为在某些情况下,这正是我想要的。 因此,我正在寻找一种方法来明确告诉 WebView 在登录页面发出

Negotiate

质询后不要传递任何 Kerberos 票证。至少我

认为
这就是我正在寻找的 - 如果我走错了路,请随时纠正我。 最终结果应如下所示:我的 WinForms 应用程序有一个“登录”按钮和一个“使用当前用户”复选框。单击选中复选框的按钮可以使用无缝 SSO 对我进行身份验证。单击未选中复选框的按钮会导致 Microsoft 登录页面询问我的凭据。

我真的被困在这里了,因为互联网上充满了描述如何让 SSO 工作的内容..关于如何让它

停止

工作的内容却很少:D

.net winforms webview openid-connect identitymodel
1个回答
0
投票
prompt=login

来处理:

var frontChannelExtraParameters = new IdentityModel.Client.Parameters();
if (!useCurrentUser)
    frontChannelExtraParameters.Add("prompt", "login");

var loginResult = await oidcClient.LoginAsync(
    new LoginRequest()
    {
        FrontChannelExtraParameters = frontChannelExtraParameters
    }
);

© www.soinside.com 2019 - 2024. All rights reserved.