【发布时间】:2014-10-01 14:56:41
【问题描述】:
在我们公司,我们部署了多个使用 CAS 服务器通过 SSO 保护的 Web 应用程序。 用户请求应用程序的 url,如果尚未通过身份验证,则会被重定向到 CAS 服务器登录页面。如果身份验证成功,用户将被重定向回最初请求的 url。通用的工作流程,完美运行。
但是,我们还想使用 CAS 服务器保护我们的 REST API。 我们的首选流程如下:
- 用户为应用程序 REST Api 创建令牌
- 使用此令牌,用户可以请求临时访问令牌(如 CAS 令牌)
- 在对 REST Api 的每个请求中,用户将临时访问令牌作为 HTTP 标头或请求参数包含在内
- REST Api 应用程序根据 CAS 服务器检查提供的临时令牌的有效性
听起来像 CAS 服务器确实支持的 OAuth,除了在任何时候都不会要求用户提供凭据,但我们还想为服务(即调用我们 API 的其他应用程序)提供身份验证:
- 开发人员要求提供 REST Api 令牌(与 CAS 用户相关联)
- 应用程序使用 Api 令牌请求临时访问令牌
- 对 Api 的进一步请求包括临时访问令牌作为 HTTP 标头或请求参数
- REST Api 应用程序根据 CAS 服务器检查临时访问令牌的有效性
我们希望我们的 REST Api 应用程序对用户凭据一无所知,它们甚至无法访问用户数据库,这对于使用应用程序的人来说工作得很好(重定向到 CAS 登录页面)。
我不知道我们如何实现这个流程,而不必大量定制 CAS 服务器并自己实现这个行为。
Google 将 JWT 用于 OAuth 2.0 for Server to Server Applications,这似乎是可行的方法。
如果有人能提供一些提示或替代方案(对 CAS 服务器),我将不胜感激。也许有人已经使用 CAS 服务器实现了这个模式,并且可以提供一些关于这个问题的信息。
最好的问候, 马可
【问题讨论】:
标签: spring oauth-2.0 cas jwt rest-security