使用ADFS在防火墙后验证混合移动应用程序

时间:2013-08-17 19:03:45

标签: authentication mobile vpn saml adfs

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

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

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

我会对遇到同样问题的人以及你如何解决而感激。

2 个答案:

答案 0 :(得分:1)

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

从移动客户端中的STS获取令牌通常涉及将身份验证委派给Web浏览器(使用被动配置文件),然后提取令牌然后它变得可用。对于不支持“Active Profile”(可以发送客户端凭据并在交换中接收安全令牌的端点)的STS,情况通常如此。 ADFS支持此功能(通过WS-Trust),但您不希望ADFS暴露给Internet(尽管如此,ADFS在不需要VPN的情况下具有特定的角色)。

this sample说明了这种技术。 PhoneGap可能会有一个等价物。

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

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

在任何情况下,一旦获得令牌,您就会将其发送给API。保护WebApi端点可能涉及使用JsonWebTokenHandler。这方面的一个例子是here

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

答案 1 :(得分:0)

这似乎是一个基本的ADFS架构问题,完全与平板电脑,移动电话,手机屏幕或依赖方无关。我认为你所缺少的是你支持让你的ADFS服务器完全无法访问防火墙。然后在客户端与之通信的DMZ中设置代理,然后代理可以与您的ADFS服务器通信。

请记住,联合登录的最大好处之一是安全令牌可以来自您网络之外的某个地方(例如来自合作公司,谷歌,微软,Facebook等)。这是您打算设置的以人们可以从网络外部发起请求的方式提供服务器。如果情况并非如此,ADFS的价值会大大降低。