RESTful Web服务的CAS身份验证

use*_*425 6 authentication rest service cas web

我的应用程序需要访问在不同服务器上运行的RESTful Web服务.此Web服务使用CAS身份验证,当通过浏览器使用它时,如果用户尚未通过身份验证,它将重定向到CAS登录.没有方法可以通过CAS实际登录.我的应用程序也使用CAS,因此用户将被验证

我想通过JQuery/Ajax访问它,但似乎没有为JSONP配置服务器,我理解这是必不可少的,因为跨域问题.

现在,我可以通过我的服务器发出Ajax请求,这导致了我的问题:我的服务器没有CAS登录方法来调用,我如何"告诉"用户被认证的Web服务?

所以我想首先我要弄清楚浏览器,CAS和RESTful服务之间发生了什么,以及如何在没有任何明确的凭据传递的情况下处理授权.其次,我想知道如何从我的服务器调用服务时是否可以复制它 - 它与来自浏览器的请求不是同一个会话因此没有CAS授权令牌,但我不看看如何获​​得或提供它.

6to*_*ton 6

有关身份验证/单点登录如何工作的问题1:
当您登录CAS服务器(例如security.example.com)时,会在浏览器中为域security.example.com设置cookie.使用标准CAS身份验证和验证过滤器在应用程序上通过浏览器访问受保护文件时的典型流程如下所示:

  1. 为应用程序配置的CAS身份验证筛选器检查用户对象是否在会话中.如果是,则允许用户通过
  2. 如果没有,CAS身份验证过滤器会将浏览器重定向到CAS登录页面.在单点登录方案中,CAS服务器识别其自己的cookie,检查应用程序是否已注册并参与单点登录 - 如果是,则将浏览器重定向回具有服务票证的应用程序.
  3. 在应用程序上配置的CAS验证过滤器标识服务票证并联系CAS Server以验证票证和创建断言对象

要使整个流程正常工作,您需要使用cookie和会话处理才能工作.

关于如何在服务器端处理身份验证的问题2:
我们在应用程序中遇到了类似的问题,并使用2种不同的方法来解决它:

  1. 使用内部系统用户并执行服务器到服务器访问,使用基本身份验证标头传递此用户的凭据.当然,您需要配置适当的过滤器来处理具有基本身份验证令牌的非交互式登录.这很容易实现,但有明显的缺点,如有这个特殊的系统用户,你的应用程序看到用户密码等.
  2. 使用代理验证.在此方法中,当您的用户通过application1进行身份验证时,它还会生成一个供应用程序2使用的代理服务单(服务器到服务器调用).此代理票据可以在服务器到服务器通信中传递,以便application1代表用户访问application2