我的应用程序需要访问在不同服务器上运行的RESTful Web服务。此Web服务使用CAS身份验证,当通过浏览器使用它时,如果用户尚未通过身份验证,它将重定向到CAS登录。没有方法可以通过CAS实际登录。我的应用程序也使用CAS,因此用户将被验证
我想通过JQuery / Ajax访问它,但似乎没有为JSONP配置服务器,我理解这是必不可少的,因为跨域问题。
现在,我可以通过我的服务器发出Ajax请求,这导致了我的问题:没有CAS登录方法供我的服务器调用,我如何“告诉”Web服务用户是否经过身份验证?
所以我想首先我想弄清楚浏览器,CAS和RESTful服务之间发生了什么,以及如何在没有任何明确的凭据传递的情况下处理授权。其次,我想知道如何从我的服务器调用服务时是否可以复制它 - 它与来自浏览器的请求不是同一个会话因此没有CAS授权令牌,但我不看看如何获得或提供它。
答案 0 :(得分:6)
有关身份验证/单点登录的问题1:
当您登录CAS服务器(例如security.example.com)时,会在浏览器中为域security.example.com设置cookie。使用标准CAS身份验证和验证过滤器在应用程序上通过浏览器访问受保护文件时的典型流程如下所示:
要使整个流程正常工作,您需要使用Cookie和会话处理。
关于如何在服务器端处理身份验证的问题2:
我们在应用程序中遇到了类似的问题,并使用两种不同的方法来解决它:
答案 1 :(得分:2)
我在我的一个项目中使用这样的设置。 一些CAS实现通过休息调用启用授权。 尝试添加基本授权标头(Base 64编码用户名和密码)。 它看起来像这样
标题(“授权”,“基本”)
还尝试使用Mozilla上的REST Client访问REST API以进行调试。这将真正帮助您理解各种标题等。