使用 ADFS 时,ADAL 页面无法在公司网络内的 UWP 上加载

mac*_*ie3 5 adfs fiddler azure adal uwp

我们正在使用使用 Azure Active Directory 身份验证的 Xamarin.Forms 开发跨平台移动应用程序。对于这种情况,我们使用Microsoft.IdentityModel.Clients.ActiveDirectory nuget。它适用于除此以外的任何情况:

UWP 用户在连接到托管 ADFS 的网络时尝试使用公司帐户登录 - 键入user@domain 后,adal 页面尝试重定向到组织登录页面并失败并显示消息 -我们无法连接到您的服务现在需要。检查您的网络连接或稍后再试。

  • 当我们从 Visual Studio 运行应用程序时,问题不会出现。它仅在通过 .appx 安装应用程序时出现。

  • 当用户连接到其他网络时,问题不会出现 - 我尝试在连接到我的 Android 手机上设置的热点时登录,我成功登录。

  • 当用户连接到公司网络,但使用不在我们 ADFS 中的帐户登录时,问题不会出现。


我们用来登录的方法:

AuthenticationContext.AcquireTokenAsync(resource, clientId, RedirectUri, platformParameters)

我们将platformParameters 的参数useCorporateNetwork设置为 true,在项目属性 -> 包清单 -> 功能中,我们设置诸如专用网络(客户端和服务器)之类的标志

当尝试在不设置 RedirectUri 的情况下登录时,将出现公司登录页面,您将能够输入密码/登录名并对其进行验证,但这对我们来说没有用,因为我们需要将登录名重定向到我们的 API - 当像这样登录,您将遇到错误,指出指定的 redirectUri 不是为使用的 clientId 配置的。

我一直在尝试不同的方法,比如使用本机 WebAuthenticationCoreManager,但它不支持 RedirectUri(如果它支持并且可以工作,请写下如何操作!),为我们的应用程序和 AuthHost.exe 设置 Loopback Exempts(没有改变)。


我很高兴使用任何可行的方法,它可以是原生 UWP 方法,因为我们可以使用平台依赖项。


编辑

当我尝试通过 VPN 连接时,在登录时我收到消息 -我们现在无法连接到您需要的服务。检查您的网络连接或稍后再试。- 即使我从 Visual Studio 运行应用程序。

至于试图找到 Fiddler 问题的原因,我惊呆了——当我用 fiddler 监视 authhost.exe 进程时(我选择身份验证弹出窗口作为目标进程)——然后身份验证成功完成。我停止使用提琴手进行监控的那一刻 - 它再次失败。

小智 5

有趣的是,你让它与附加到 AuthHost 的 Fiddler 一起工作。在您的故障排除中,您是否尝试过以下选项?

在 AppPackage 清单中启用功能

  • 专用网络客户端服务器
  • 企业认证
  • 共享用户证书

添加环回豁免

CheckNetIsolation.exe LoopbackExempt -a -n=<YourPackageFamilyName>
CheckNetIsolation.exe LoopbackExempt -a -n=microsoft.windows.authhost.a_8wekyb3d8bbwe 
CheckNetIsolation.exe LoopbackExempt -a -n=microsoft.windows.authhost.a.p_8wekyb3d8bbwe
CheckNetIsolation.exe LoopbackExempt -a -n=microsoft.windows.authhost.sso_8wekyb3d8bbwe
CheckNetIsolation.exe LoopbackExempt -a -n=microsoft.windows.authhost.sso.p_8wekyb3d8bbwe 
Run Code Online (Sandbox Code Playgroud)

为 AuthHost 启用专用网络

REG ADD "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\authhost.exe" /v EnablePrivateNetwork  /t REG_DWORD /d 1 /f
Run Code Online (Sandbox Code Playgroud)