0

我有一个通过 iframe 加载外部内容(小部件)的门户应用程序。用户通过门户本身登录到CAS 。但是,有一些门户 API 需要从该外部内容中调用。我必须将哪些信息从门户传递到小部件,这些小部件可以用来进行这些调用而不会被 CAS 拒绝?

更新

我调查得越多,我就越认为我的问题归结为 CAS 是如何真正做到它应该做的。换句话说,我怎样才能从我已通过身份验证的一个站点转到另一个站点并告诉它我已经完成了身份验证。这背后的机制是什么,我如何在网络环境中使用。

4

2 回答 2

1

您描述的门户场景正是 CAS 代理票务的设计目的。我们将它与基于 iframe 的门户网站系统一起使用,它运行良好。

CAS 代理票证机制允许客户端(您的门户网站)向其他客户端(加载在您的门户网站的 iframe 中的小部件)发送服务票证。这为您的用户节省了浏览器加载的每个小部件的 CAS 服务器之旅。如果您尝试使用 CAS 进行 Web 服务身份验证(即,当一个 Web 服务需要连接到另一个受 CAS 保护的 Web 服务时),代理也很有用。

请注意,出于您的目的,代理票务实际上并不是必需的。如果没有它,您的 portal-iframe 设置应该可以工作。但是如果没有代理票务,每个小部件在加载时都必须通过 CAS 服务器。至少这会减慢加载时间。

不久前,我写了一个为 RubyCAS-Client 设置 CAS 代理票证的指南。这些说明特定于 Ruby 客户端,但它们应该可以很好地概述 CAS 代理的工作原理。诚然,实现有点复杂——主要是由于“代理授予票”协商过程:

http://rubycas-client.rubyforge.org/files/README_txt.html (向下滚动到“如何充当 CAS 代理”部分,大约向下 2/3)

于 2010-03-08T21:18:44.943 回答
0

看起来我可能会要求 CAS 做的事情超出了它的能力范围。我一直认为它是一个 SSO 引擎,可以在其中传递给定的会话,以便身份验证只发生一次。相反,CAS 似乎主要面向集中式身份验证服务(是的,具有讽刺意味的是,这是首字母缩略词的实际含义)。通过将身份验证请求交给中央服务器,该服务器可以读取单个 cookie。因此,像 API 这样的无状态连接无法通过这种方式进行验证。

看起来 CAS 的代理票可能会带来一些希望,但我还没有准备好冒险走这条路。

于 2010-03-05T22:10:53.050 回答