3

我正在尝试在Xamarin 跨平台移动应用程序上实现身份验证和识别,该应用程序使用来自我拥有的 WebApi 服务的数据。

我的目标如下:
让移动应用程序针对各种身份提供者执行身份验证,获取安全令牌,并将其传递给请求标头内的 WebApi 服务。
然后,该服务将实现 aDelegatingHandler验证令牌,并从中提取一个 userId,用于以后的识别和授权需求。
我希望我的客户端代码尽可能地共享!

我的选项 AFAIK 如下:

  1. 使用Azure 移动服务在客户端生成联合安全令牌,并在 WebApi 服务上验证令牌。我认为这是可能的,多亏了这个 SO answer。得益于Xamarin Azure 移动服务组件,客户端的代码共享看起来很有前景。

  2. 使用Azure 访问控制服务 (ACS)在客户端生成联合安全令牌,并在 WebApi 服务上验证令牌。但是,我不认为在客户端上使用 ACS 可以很容易地进行代码共享。此外,ACS 并不是镇上的新人……

  3. 使用Xamarin.Auth 组件直接针对身份提供者进行客户端身份验证,生成 JWT 安全令牌,并在 WebApi 服务上对其进行验证。这应该可以让 IdP 更多地访问用户数据。然而,目前该组件目前缺乏 Windows Phone 支持,并且不太可能在晚秋之前推出

如果有人已经处理过这种情况,请分享您的经验,让我知道正确的方法是什么。
如果我的目标一开始就错了,也不要犹豫批评它。

4

1 回答 1

2

您是否在使用 Windows Azure 移动服务 (WAMS) 后端?看起来您有自己的与 WAMS 无关的 API。

如果您想使用 WAMS 只是因为它们能够为您提供 JWT 并通过 Twitter/FB 和 Live(他们支持的 IdP)进行身份验证,那么您只需要使用知道如何处理 WAMS 的令牌特性的令牌处理程序。(此文档显示了他们如何签署 JWT)。

可以使用 ACS,但它们的 IdP 数量也有限(尽管比 WAMS 多),当然您的 API 必须考虑不同的令牌格式。

您可以在我们编写的这 2 个教程中查看我们用于此类集成的方法。它们面向我们自己的身份平台,但它们使用的 SDK 是开源的,您可以查看它们的工作原理(查找 GitHub 存储库的链接)。

Xamarin 教程

WebApi / MVC 教程

对你的#3 的评论。并非所有 IdP 都能够发布 JWT。您需要一个中介来为您生成(例如 ACS、像我们这样的服务等)。在客户端代码中生成令牌并不是一个好主意,因为客户端代码通常是“不可信的”。(并且secrets不存储在设备中)。

于 2013-08-16T15:23:11.947 回答