6

我正在考虑开发一个使用 REST 公开服务的应用程序。这些服务将通过浏览器和非浏览器客户端访问。我预计会有许多由不同团体拥有和管理的软件安装。我想让一个系统的用户能够访问另一个系统上的服务。它们不会共享相同的身份存储。我希望用户可以对其实例进行身份验证,然后使用令牌向其实例和远程实例发出请求。这似乎是 JSON Web Tokens (JWT) 的一个很好的用途。每个系统都需要配置为相互信任由证书签名的令牌。

我已经读到这可以使用带有 JWT Bearer 令牌的 OAuth 来完成,但这似乎比需要的开销更大。为什么将不记名令牌交换为访问令牌而不是仅使用不记名令牌?我质疑 OAuth 是否合适,因为它不是控制系统是否可以访问用户的数据,就像网络上的许多示例一样,而是用户是否可以访问存储在系统中的数据。

问题的下一部分是确定如何创建这些 JWT 令牌,看起来像 WS-Trust STS 这样的东西是合适的。我还没有看到任何简单的,只是验证用户并返回令牌。可能还支持延长令牌的到期时间和令牌的验证是否有用?

过去,我能够使用带有 WS-Security 和 SAML Assertions 的 SOAP 来启用这种类型的功能。我想看看是否可以使用 REST 和 JWT 令牌来完成相同的操作。网上有很多帖子建议不要使用自己的安全框架,所以我有点犹豫要不要继续前进。我看到微软添加了处理程序来保护使用 JWT 令牌的服务,所以他们似乎看到了这种方法的一些价值。

有没有人了解以符合标准且简单的方式为 REST 服务完成这种身份联合的方法?

4

1 回答 1

4

是的,这是我向客户推荐的方法。事实上,JWT 是 Windows Azure 移动服务保护其端点的方式。JWT 处理起来相对简单(例如与 SAML 令牌相比),但与access_tokens(例如具有签名)相比,它保留了有趣的属性。

此文档显示了如何使用 WebApi 和我们的产品(如果您使用的是 MS 技术)进行此操作的示例。这些原则是通用的,无论您是否使用我们的 STS,您都可以应用。

于 2013-04-26T15:36:20.897 回答