0

我正在使用 omniauth-cas 1.0.4 授权我的用户使用 cas 服务器。但是服务器支持 CAS 1 架构,而 gem 支持 CAS 2 架构。

CAS 1 服务验证器以两行响应(在文本/纯 HTTP 响应中);第一行是yes或no,对应应用程序出示的票证是否有效。如果票是有效的,第二行包含持票人的NetID——即认证成功的用户的标识。如果票证无效,则第二行为空。因此,一个示例响应是: yes peon 如果票证有效,CAS 会立即将其删除,使其不能再次使用。但是 CAS 2 体系结构以 XML 片段响应。是否有 ant gem 可用于支持 CAS 1 架构?

4

1 回答 1

1

在我的快速 Google 搜索中,我没有找到提供 CAS 1.0 功能的 gem,但修改现有库以支持它应该不难。(我不是 Ruby 开发人员,或者我会自己做。)

你可以克隆https://github.com/dlindahl/omniauth-cas/(或者官方位置,如果不是这样的话)。所需的大部分修改都在Ticket Validator中。您将需要删除 XML 代码并替换为标准的行解析代码。get_service_response_body 应该是响应。find_authentication_success 将要检查响应的第二行。parse_user_info 应该将 hash["user"] 分配给在响应的第 1 行中找到的用户。

https://github.com/dlindahl/omniauth-cas/blob/master/lib/omniauth/strategies/cas.rb文件也需要更改。CAS 1.0 是通过 /validate 而不是 /serviceValidate 处理的。

于 2013-10-10T05:29:32.093 回答