单点登录和基本身份验证

Single Sign-On and Basic Authentication

我们有一些 REST-ful Web 服务,它们一直使用 HTTP 基本身份验证来验证客户端。我们正致力于使用 Jasig CAS 单点登录服务部署单点登录。 CAS 使用的 SSO 握手需要使用 302 重定向将未经身份验证的客户端重定向到 CAS 登录。

不幸的是,HTTP Basic Auth 需要对未经身份验证的请求进行 401 响应,因此我们在 Basic Auth 需要 401 响应而 CAS 需要 302 响应时发生冲突。有没有办法解决 CAS 的这个问题并仍然支持基本身份验证?

使用无状态 REST 服务的正确方法是使用 CAS 的代理身份验证。 REST 服务在请求中查找票证查询参数并将其验证为代理票证。由于 REST 服务通常没有会话,因此您通常必须实施一种存储机制来为多个请求接受相同的代理票证,而无需多次使用 CAS 进行验证(如果您尝试多次验证,您可能会被拒绝根据您在 CAS 中配置的每张票证的验证数量)。如果缺少票证查询参数,我们将 return 一个 401 Missing Auth 响应并且从不 return 一个 302 重定向。此方法可以与基本身份验证共存。