1

我们计划使用 Kendo Mobile (Phonegap+Javascript) 开发和企业平板电脑应用程序。应用程序所需的所有服务都将使用 ASP.NET Web API 技术开发,并且它们需要受到保护。

用户平板电脑应用程序需要使用公司防火墙后面的 ADFS 进行身份验证。我们可以在 Azure 网络和公司网络之间打开站点到站点 VPN 隧道,以允许从 Azure 上的服务层访问 ADFS。

平板电脑不会与公司网络建立 VPN 连接。现在的问题是我们如何使用 SAML 通过 ADFS 对移动用户进行身份验证?阅读大量有关主动/被动身份验证方案的信息,但它们需要直接从平板电脑访问 ADFS。既然我们没有,我们是否可以在 Azure 上拥有一个身份验证服务,它可以通过 VPN 隧道与 ADFS 对话,并向平板电脑提供一些令牌,然后平板电脑使用该令牌与受保护的服务对话?

我将不胜感激任何遇到同样问题以及您如何解决的人

4

2 回答 2

1

我假设您的 API(基于 WebApi)托管在 Azure 上,对吗?

从移动客户端中的 STS 获取令牌,通常涉及将身份验证委托给 Web 浏览器(使用被动配置文件),然后提取令牌,然后它变得可用。对于不支持“活动配置文件”(您可以发送客户端凭据并接收安全令牌作为交换的端点)的 STS,通常会出现这种情况。ADFS 支持这一点(通过 WS-Trust),但您不希望 ADFS 暴露在 Internet 上(尽管您可以,并且 ADFS 对此具有特定的作用,而无需 VPN)。

此示例中说明了该技术。PhoneGap 可能会有一个等价物。

在您的情况下,一种(更简单?)的方法可能是获取一个 Windows Azure AD (WAAD) 帐户,并使用 DirSync 在那里同步您的 AD,然后使用 WAAD 作为 STS(代替 ADFS)。WAAD 根据定义暴露在互联网上,因此您不需要 VPN 或任何东西。最新版本的 DirSync 也将同步密码哈希。其架构类似于此博客文章中描述的内容。(请参阅页面底部的图表,用您自己的 API 替换任何打包的应用程序)。

但是,我不是 100% 确定 Azure AD 支持 WS-Trust(我上次检查时没有)。所以你可能需要使用我之前描述的技术(使用浏览器)。

无论如何,一旦您获得令牌,您就会将其发送到 API。保护 WebApi 端点可能涉及使用JsonWebTokenHandler此处提供了一个示例。

最后一点:您可能需要考虑使用 Windows Azure 移动服务。你看过吗?

于 2013-08-18T03:13:36.560 回答
0

这似乎是一个基本的 ADFS 架构问题,与平板电脑、移动设备、phonegap 或依赖方完全无关。我认为您缺少的是您应该让您的 ADFS 服务器位于防火墙后面,每个人都无法访问。然后,您在 DMZ 中设置一个与您的客户端通信的代理,然后该代理可以与您的 ADFS 服务器通信。

请记住,联合登录的最大好处之一是安全令牌可以来自您的网络之外的某个地方(例如,来自合作公司,或 google、Microsoft、facebook 等)。您可以将服务器设置在人们可以从您的网络外部发起请求的一种方式。如果不是这种情况,ADFS 的价值会大大降低。

于 2014-02-26T21:10:44.770 回答