gpt4 book ai didi

rest - RESTful Web 服务的 CAS 身份验证

转载 作者:行者123 更新时间:2023-12-01 05:08:07 24 4
gpt4 key购买 nike

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

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

现在,我可以通过我的服务器发出 Ajax 请求,这引出了我的问题:如果我的服务器没有可调用的 CAS 登录方法,我如何“告诉”Web 服务用户已通过身份验证?

所以我想首先我想弄清楚浏览器、CAS 和 RESTful 服务之间发生了什么,以及如何在没有任何显式传递凭据的情况下处理授权。其次,我想看看在从我的服务器调用服务时如何/是否可以复制它 - 它不会与来自浏览器的请求相同,因此没有 CAS 授权 token ,但我没有了解如何获得或提供。

最佳答案

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

  • 为应用程序配置的 CAS 身份验证过滤器检查用户对象是否在 session 中。如果是,则允许用户通过
  • 如果没有,CAS 身份验证过滤器会将浏览器重定向到 CAS 登录页面。在单点登录场景中,CAS 服务器识别自己的 cookie,检查应用程序是否已注册并参与单点登录 - 如果是,则将浏览器重定向回带有服务票证的应用程序。
  • 在应用程序上配置的 CAS 验证过滤器识别服务票证并联系 CAS 服务器以验证票证和创建断言对象

  • 要使整个流程正常工作,您需要 cookie 和 session 处理才能工作。

    关于如何在服务器端处理身份验证的问题 2:
    我们在应用程序中遇到了类似的问题,并使用了 2 种不同的方法来解决它:
  • 使用内部系统用户并执行服务器到服务器访问,使用基本身份验证 header 传递此用户的凭据。当然,您需要配置适当的过滤器来处理具有基本身份验证 token 的非交互式登录。这很容易实现,但是有明显的缺点,比如有这个特殊的系统用户,你的应用程序看到用户密码等。
  • 使用 proxy authentication .在这种方法中,当您的用户通过 application1 的身份验证时,它还会生成一个由 application2 使用的代理票证(服务器到服务器调用)。此代理票证可以在服务器到服务器的通信中传递,以便应用程序 1 代表用户访问应用程序 2
  • 关于rest - RESTful Web 服务的 CAS 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13582315/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com