【发布时间】:2018-12-22 01:39:52
【问题描述】:
我正在开发一个 UWP 应用,该应用需要针对本地 ADFS 2016 实例进行身份验证,但使用的是 Windows 集成身份验证。
我正在使用 ADAL 3.19.8。 该应用程序在已加入域的 Windows 10 设备上运行。 该应用程序启用了企业身份验证、专用网络(客户端和服务器)和共享用户证书功能,如下所述:https://github.com/AzureAD/microsoft-authentication-library-for-dotnet/wiki/uwp-specificities
我将 UseCorporateNetwork 标志设置为 true。 在 Internet 选项中启用了 Windows 集成身份验证,并且我已将 ADFS 服务器添加到本地 Intranet 区域。
这是我尝试进行身份验证的方式:
string authority = "https://xxxx/adfs/oauth2";
const bool useCorporateNetwork = true;
var authContext = new AuthenticationContext(authority, false);
var authResult = await authContext.AcquireTokenAsync(
resourceURI,
clientID,
new Uri(clientReturnURI),
new PlatformParameters(PromptBehavior.Auto, useCorporateNetwork));
针对 ADFS 的身份验证成功,我获得了访问和 ID 令牌。但是,该应用程序始终显示 ADFS 登录屏幕。要继续,我输入用于登录 Windows 的相同用户名和密码凭据。显然,这并不理想,也不是应用用户希望看到的行为。
使用 Fiddler 我看到 UWP 应用调用 https://xxxx/adfs/oauth2/authorize。
如果我在 WinForms 应用程序中使用上述代码,我可以获得我期望的 SSO 行为(尽管没有 useCorporateNetwork 重载)。 使用 Fiddler,WinForms 应用调用 https://xxxx/adfs/oauth2/authorize/wia
我错过了什么?
【问题讨论】:
标签: uwp windows-authentication adfs adal