【问题标题】:REST authentication / authorization using JWT federated identities使用 JWT 联合身份的 REST 身份验证/授权
【发布时间】:2013-04-17 00:13:06
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: rest identity federation jwt


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-07-17
      • 1970-01-01
      • 1970-01-01
      • 2017-07-21
      • 1970-01-01
      • 1970-01-01
      • 2023-02-22
      • 2017-12-10
      • 2019-06-09
      相关资源
      最近更新 更多