【发布时间】:2017-02-16 09:34:18
【问题描述】:
我们正在使用 Xamarin.Forms 开发一个跨平台移动应用程序,该应用程序使用 Azure Active Directory 身份验证。对于这种情况,我们使用 Microsoft.IdentityModel.Clients.ActiveDirectory nuget。它适用于除此之外的任何情况:
UWP 用户在连接到托管 ADFS 的网络时尝试使用公司帐户登录 - 键入 user@domain 后,adal 页面尝试重定向到组织登录页面并失败并显示消息- 我们现在无法连接到您需要的服务。检查您的网络连接或稍后再试。
当我们从 Visual Studio 运行应用程序时,该问题不会出现。只有在通过 .appx 安装应用时才会出现。
当用户连接到其他网络时,问题不会出现 - 我在连接到我的 Android 手机上设置的 HotSpot 时尝试登录,并且我成功登录。
当用户连接到公司网络,但使用不在我们 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 进程时(我选择身份验证弹出窗口作为目标进程)——然后身份验证成功完成。当我停止使用 fiddler 进行监控时 - 它再次失败。
【问题讨论】:
-
既然您提到了 Azure Active Directory 身份验证,您是否将您的本地 Active Directory 与 Azure Active Directory 集成?
-
至于 AAD,我只负责使用它,而不是配置,但由于该应用程序在 Android 和 iOS 上运行没有问题(即使在公司网络中),那么它应该全部正确设置在 AAD 方面,对吧?
-
Azure Active Directory 与 Active Directory 不同,为了正确理解,我想与您确认您使用的是 Azure Active Directory 还是 Active Directory。关于 Azure Active Directory,您可以参考 here。
-
是的,这是 Azure Active Directory,与我们的后端团队进行了交谈,并在 Azure 门户上进行了仔细检查。
-
你应该得到一个提琴手跟踪,看看是否存在真正的连接问题。
标签: azure uwp fiddler adfs adal