通过CAS从“子”应用程序进行身份验证

时间:2010-03-04 20:09:46

标签: authentication cas

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

更新

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

2 个答案:

答案 0 :(得分:1)

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

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

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

前段时间我写了一篇关于为RubyCAS-Client设置CAS代理票务的指南。这些说明特定于Ruby客户端,但它们应该让您很好地了解CAS代理的工作原理。不可否认,实施有点复杂 - 主要是由于“代理授予票证”协商过程:

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

答案 1 :(得分:0)

看起来我可能要求CAS做更多的事情。我一直认为它是一个SSO引擎,可以传递给定的会话,以便只进行一次身份验证。相反,似乎CAS主要适合作为集中式身份验证服务(是的,我认为具有讽刺意味的是,这是首字母缩略词的实际代表)。通过将身份验证请求发送到中央服务器,该服务器可以读取单个cookie。然后,像API这样的无状态连接无法通过这种方式进行验证。

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