跳转到主要内容

这是JA-SIG的CAS协议服务器端的Python实现,提供跨域单点登录解决方案。

项目描述

作者:

jiangdongjin

联系信息:
eastxing@gmail.com
日期:
2010/09/25

摘要

这是JA-SIG的CAS协议服务器端的Python实现,提供跨域单点登录解决方案。

1 简介

anz.cas实现了一个新的PAS插件“Anz中央认证服务”。它允许您将您的Plone站点转换为CAS服务器。

2 概述

anz.cas为您提供

  • 一个独立的中央登录页面,用户在此输入其凭据。

  • 一种机制,用于验证用户凭据与各种后端(利用PAS的认证插件)。

  • 后端验证器,其中CAS启用客户端应用程序连接以检查当前用户是否经过身份验证(如果用户已经通过CAS服务器进行过身份验证,则允许他们继续操作,否则将重定向到CAS服务器的登录页面进行身份验证)。

  • 几乎与开放的、多平台的CAS协议完全兼容。

为什么你需要/想要这个

  • CAS允许你在域之间共享身份验证。

  • 用户只需登录一次——他们第一次尝试访问你的任何一项CAS受保护服务时,以后再也不会了,除非他们注销或其单点登录会话过期。

  • 客户端应用程序永远不会看到用户的实际凭据。

3 致谢

感谢那些开发了以下产品的人,没有你们的努力,anz.cas将不会发生。

4 与JA-SIG的CAS的比较

4.1 优点

  • anz.cas设计得非常简单,由Zope/Plone用户设置和配置(这与它流行的官方Java兄弟JA-SIG CAS Server正好相反)。

  • 使用JA-SIG CAS服务器,您应该做更多的工作来集成您的Zope/Plone网站。使用anz.cas,您可以减少您的软件堆栈。

  • 您现在可以充分利用现有的PAS身份验证插件来为您执行身份验证工作。

4.2 缺点

  • 作为官方实现,JA-SIG CAS服务器稳定、坚固且广泛使用。anz.cas则相反,希望你们能给我一些反馈,让它变得更好 :)

5 要求

  • Plone 3或Plone 4

  • ZODB3>=3.8.3(当Plone3时,仅在3.8.3下进行测试)

  • zope.proxy>=3.4.1(当Plone3时,仅在3.4.1下进行测试)

  • zope.bforest

  • uuid

6 安装

要将anz.cas安装到全局Python环境(或工作环境)中,使用传统的Zope 2实例,您可以这样做

  • 当您阅读此内容时,您可能已经运行了easy_install anz.cas。有关安装setuptools(和EasyInstall)的信息,请参阅:http://peak.telecommunity.com/DevCenter/EasyInstall

  • /path/to/instance/etc/package-includes目录中创建一个名为anz.cas-configure.zcml的文件。该文件应仅包含以下内容

<include package="anz.cas" />

或者,如果您使用zc.buildout和plone.recipe.zope2instance配方来管理项目,您可以这样做

  • anz.cas添加到要安装的eggs列表中,例如

[buildout]
...
eggs =
    ...
    anz.cas
  • 告诉plone.recipe.zope2instance配方安装ZCML缩写

[instance]
recipe = plone.recipe.zope2instance
...
zcml =
    anz.cas
  • 重新运行buildout,例如

$ ./bin/buildout

如果您打算从另一个包的configure.zcml文件中显式包含该包,则可以跳过ZCML缩写。

然后进入您的Plone网站,通过quick_installer或portal_setup安装“anz.cas”产品。

7 如何使用anz.cas

anz.cas设计得易于设置和定制。

7.1 创建Plone站点作为“CAS服务器”

出于安全考虑,我强烈建议您创建一个专门的Plone网站,用作“CAS服务器”。在此网站上,您应安装“anz.cas”并对其进行配置。假设网站名称为“cas”。

7.2 在Apache后设置您的Plone站点并启用SSL

作为CAS协议,出于安全考虑,与CAS服务器之间的所有通信都通过SSL进行。如何做不在本文档的范围内,此文档将引导您。

注意:您现在可以忽略这一点,通过以下步骤快速体验anz.cas。

7.3 自定义中央登录页面

anz.cas使用Plone库存的login_form作为中央登录页面,您可以根据需要对其进行皮肤化。

7.4 配置您的认证机制

anz.cas利用PAS身份验证插件进行身份验证工作,因此您可以配置PAS以符合您的需求。

7.5 创建“Anz中央认证服务”插件

转到ZMI \cas\acl_users,添加一个名为“Anz Central Auth Service”的实例,选择您喜欢的任何ID,例如我们输入“anz_cas”。

7.6 配置“Anz中央认证服务”插件

  1. 前往 \cas\acl_users\anz_cas,在“活动”选项卡中启用唯一接口 - IChallengePlugin。

    点击“挑战”以配置“挑战插件”,将“anz_cas”移到顶部。

  2. 前往“属性”选项卡以配置CAS相关属性。

属性

必需

默认值

注意

requireSecure

False

True

表示是否需要安全连接的布尔变量。

注意:如果您想在非ssl环境中体验anz.cas,应将其设置为False。

loginPagePath

True

login_form

登录时要发送人员的位置,默认为Plone的“login_form”。

7.7 服务管理

默认情况下,没有任何限制,任何URL上的任何服务都可以通过CAS进行身份验证。这可能由于多种原因而不理想,因此anz.cas提供了一个服务管理工具,以控制哪些服务可以使用CAS服务器,以及这些服务可以做什么。

  • 在“服务”选项卡中列出所有当前注册的服务,您可以选择其中几个或全部进行删除。

  • 点击“添加服务”链接以注册新服务。

字段名称

必需

默认值

注意

ID

True

注册服务的标识符,它必须等于CAS客户端中配置的serviceUrl。CAS将在登录后重定向到这里。

名称

False

注册服务的名称。

描述

False

注册服务的描述。

启用

False

True

此服务当前是否允许使用CAS?

SSO启用

False

True

此服务是否参与SSO会话?

匿名访问

False

False

服务是否允许匿名或特权访问用户信息?

允许代理

False

True

此应用程序是否允许参与CAS的代理功能?

  • 点击已注册服务的ID以修改它。

注意:如果没有注册服务,则没有任何限制,任何URL上的任何服务都可以通过CAS进行身份验证。

7.8 配置CAS客户端

配置您的CAS客户端的casServerUrlPrefix以指向我们新添加的插件实例,例如 https://{您的cas服务器域名}:{端口}/cas/acl_users/anz_cas。

8 安全策略

anz.cas使用票据来实现支持的认证协议,因此票据行为决定了大多数安全策略方面。在当前实现中,anz.cas提供了以下内容

  • 自创建时间起超过2小时后过期的票据授予票据(TGT)。

  • 一次性使用的服务票据(ST),必须在5分钟内验证。

以后将添加更多安全策略。

9 待办事项

  • 添加自动化测试(我真的不知道如何自动化测试这种类型的包 :))

  • 与CAS协议的更多兼容性。

10 变更日志

10.1 1.0.1

  • 更新以支持Plone4。

注意:在Plone3下使用时,请像这样固定产品版本:ZODB3==3.8.3 zope.proxy==3.4.1

  • 登录成功后的重定向错误修复。

10.2 1.0

  • 首次发布

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定要选择哪个,请了解更多关于 安装软件包 的信息。

源分布

anz.cas-1.0.1.tar.gz (46.7 kB 查看散列值)

上传

支持

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页面