我使用IdentityModel.OidcClient在WinForms应用程序中根据Microsoft Entra ID对用户进行身份验证。
效果很好。太好了。
基本上,登录页面从来没有问我的用户名/电子邮件或密码。它只是无缝(提示..)签署我在使用我目前登录的windows帐户。
我猜这是因为当前登录到运行WinForms应用程序的计算机的Windows用户实际上是我试图进行身份验证的租户内的有效用户。因此Microsoft Seamless SSO
启动并使用Windows 1000来验证我。这是一个非常酷的功能,但并不总是我想要的。
在某些情况下,我可能想显式选择一个不同的用户来登录。我不想在整个应用程序/租户的Entra ID端禁用无缝SSO,因为在某些情况下,这正是我想要的。
因此,我正在寻找一种方法来明确地告诉WebView不要在登录页面上的Negotiate
挑战后传递任何恶意票证沿着。至少我认为这就是我正在寻找的-如果我走错了路,请随时纠正我。
最终的结果应该是这样的:我的WinForms应用程序有一个“登录”按钮和一个“使用当前用户”复选框。单击选中复选框的按钮可以使用无缝SSO对我进行身份验证。单击未选中复选框的按钮会导致Microsoft的登录页面要求我提供凭据。
我真的被困在这里,因为互联网上充满了描述如何让SSO工作的内容..没有太多关于如何让它停止工作的内容:D
1条答案
按热度按时间mqkwyuun1#
我的方法是错误的。这可以在OIDC端通过将
prompt=login
添加到授权代码请求中来处理:字符串