Windows 集成身份验证 Azure AD 和 WinForms

Windows integrated authentication Azure AD and WinForms

我们有一个非常大的 Winforms 项目,我们需要将 SSO 与 AAD 结合使用来对外部 API 服务进行 API 调用。

我正在使用 MSAL 和方法:

app.AcquireTokenSilent
app.AcquireTokenByIntegratedWindowsAuth

但是,我收到错误消息:

Microsoft.Identity.Client.MsalClientException: Integrated Windows Auth is not supported for managed users. See https://aka.ms/msal-net-iwa for details.

at Microsoft.Identity.Client.Internal.Requests.IntegratedWindowsAuthRequest

使用方法:

app.AcquireTokenInteractive

应用程序会提示用户 select 要使用什么帐户(提示显示已连接到 windows)并且我不需要输入密码,在我之后单击它唱歌的用户并获取令牌。

在我获得令牌并使用 PublicClientApp.UserTokenCache 保存下一次登录后,即使令牌已过期,我也不需要 select 用户自动登录的帐户。

我想避免第一个提示。

我已经尝试了 2 个选项(none 有效):

  1. 在 Windows AD 中创建的用户,然后同步到 AAD
  2. 在 AAD 中创建然后在 WindowsAD
  3. 中创建的用户

附加信息:

问题仅出在 Winforms 应用程序上

谢谢。

Azure AD MSAL 文档未涵盖它,但要使 Windows 集成身份验证与 MSAL 一起使用,需要在 hydrid AAD 设置中提供并设置以下任何一项。仅 AAD 连接设置将不起作用。

  1. Azure Active Directory Seamless Single Sign-On
  2. Federation with ADFS

原来是库中的一个bug,最新版本已经解决了

https://github.com/AzureAD/microsoft-authentication-library-for-dotnet/issues/1737

4.20版本解决