提问人:Ar Es 提问时间:11/9/2023 更新时间:11/9/2023 访问量:10
在基于 Webview 的 OpenID Connect 身份验证中禁用 Kerberos
Disabling Kerberos in Webview based OpenID Connect Authentication
问:
我正在使用IdentityModel.OidcClient根据Microsoft Entra ID对WinForms应用程序中的用户进行身份验证。我正在使用基于 WebView 的方法。
效果很好。太棒了。
基本上,登录页面从不要求我提供用户名/电子邮件或密码。它只是无缝地(提示..)使用我当前登录的 Windows 帐户登录我。
我猜这是因为当前登录到运行 WinForms 应用程序的计算机的 Windows 用户实际上是我尝试进行身份验证的租户中的有效用户。因此,微软开始使用Kerberos来验证我的身份。这是一个非常酷的功能,但并不总是我想要的。Seamless SSO
在某些情况下,我可能希望明确选择其他用户进行登录。 我不想在 Entra ID 端为整个应用程序/租户禁用无缝 SSO,因为在某些情况下,这正是我想要的。
因此,我正在寻找一种方法来明确告诉 WebView 在登录页面的质询后不要传递任何 Kerberos 票证。至少我认为这就是我正在寻找的 - 如果我走错了路,请随时纠正我。Negotiate
最终结果应如下所示:我的 WinForms 应用程序有一个“登录”按钮和一个“使用当前用户”复选框。单击选中复选框的按钮,即可使用无缝 SSO 对我进行身份验证。单击未选中复选框的按钮会导致 Microsoft 登录页面要求我提供凭据。
我真的被困在这里,因为互联网上充斥着描述如何让 SSO 工作的内容。关于如何让它停止工作没有太多:D
答:
0赞
Ar Es
11/9/2023
#1
我以错误的方式处理了这件事。这可以通过添加到授权代码请求在 OIDC 端进行处理:prompt=login
var frontChannelExtraParameters = new IdentityModel.Client.Parameters();
if (!useCurrentUser)
frontChannelExtraParameters.Add("prompt", "login");
var loginResult = await oidcClient.LoginAsync(
new LoginRequest()
{
FrontChannelExtraParameters = frontChannelExtraParameters
}
);
评论