felixrupp/user_cas

这是为Owncloud第三方应用user_cas提供的包


README

本应用提供CAS认证支持,使用jasig/apereo的phpCAS库。

安装

1. 依赖

  • ownCloud >= 10.0.0 和 Nextcloud >= 14.0.0
  • PHP >= 7.3
  • PHP扩展
    • ext-json
  • 可选:如果您想通过GIT安装,可以使用Composer依赖管理器
  • 可选:如果您有至少phpCAS 1.3.5的phpCAS安装,可以使用您自己的phpCAS安装。

此应用不再需要独立的jasig的/apereo的phpCAS版本。库包含在composer依赖中,在您下载的存档文件中,或者如果使用Market/App-Store版本,则在其中。尽管您可以在以后配置使用您自己的jasig的/apereo的phpCAS库版本。

2. 推荐 - ownCloud市场

  1. 使用具有管理员权限的本地创建的ownCloud用户访问ownCloud Web界面。
  2. 导航到您的ownCloud实例中的市场。
  3. 导航到安全类别,找到CAS用户和组后端
  4. 安装应用。
  5. 访问管理面板 => 应用,并启用CAS用户和组后端应用。
  6. 访问管理面板 => 用户认证并配置应用。

3. 基本安装 - 发布存档/Nextcloud应用商店

  1. 根据您的平台(ownCloud或Nextcloud)从github发布页面下载当前稳定版本,或者使用apps.nextcloud.com上提供的链接(Nextcloud)。
  2. 解压缩/解包存档。
  3. 如果未重命名,请将解压缩的文件夹重命名为user_cas
  4. user_cas文件夹移动到平台安装的应用文件夹。
  5. 根据您的Web服务器设置调整user_cas文件夹的设置。
  6. 使用具有管理员权限的本地创建的平台用户访问平台Web界面。
  7. 访问管理面板 => 应用,并启用CAS用户和组后端应用。
  8. 访问管理面板 => 安全并配置应用。

4. 仅用于开发的高级 - 使用composer克隆

  1. 将下载的user_cas文件夹克隆/复制到平台的应用文件夹,并确保为您的Web服务器设置正确的权限。
  2. 在克隆后更改user_cas文件夹内的目录,并在通过GIT安装的情况下执行composer update命令。将安装依赖项。注意:您需要安装composer二进制文件。
  3. 根据您的Web服务器设置调整user_cas文件夹的设置。
  4. 使用具有管理员权限的本地创建的平台用户访问平台Web界面。
  5. 访问管理面板 => 应用,并启用CAS用户和组后端应用。
  6. 访问管理面板 => 用户认证/安全并配置应用。

请注意,您可能需要在config/config.php中添加以下条目,以防止关于后端中缺少应用签名的警告消息

'integrity.ignore.missing.app.signature' =>
    array (
        0 => 'user_cas',
    ),

配置

应用通过管理面板进行配置。请确保使用管理员用户配置,该用户通过您的ownCloud实例(而不是CAS)进行本地认证。请确保填写所有提供的字段。

CAS服务器

CAS服务器版本:默认为CAS版本3.0,如果您没有特殊配置,请保持不变。

CAS服务器主机名:托管您的CAS的Web服务器的主机名。在/etc/hosts或您的DNS配置中查找或询问您的IT部门。

CAS服务器端口:CAS监听的端口。HTTPS的默认值为443

CAS服务器路径:您的CAS目录。在常见设置中,此路径为/cas。如果您的CAS位于您的文档根目录,请使用/。使用/

服务URL:指向您的平台的服务URL,用于CAS认证和重定向。当位于反向代理后面时很有用。此URL必须以/apps/user_cas/login结尾。

证书文件路径 (.crt):如果您不想验证证书(例如,自签名证书),则留空。否则,请输入证书(.crt)在服务器上的绝对路径,从根级别开始。

使用CAS代理初始化:如果处于活动状态,CAS-Client将作为代理初始化。默认关闭。只有当您知道自己在做什么时才激活。

基本

强制使用CAS登录用户?:如果选中,用户在访问ownCloud URL后将被立即重定向到CAS登录页面。如果选中,将自动禁用禁用CAS注销。默认:关闭

不使用以下客户端IP的强制登录:以逗号分隔的客户端IP地址列表(或地址范围),如果启用“强制用户登录”,则不会强制登录(例如,192.168.1.1-254,192.168.2.5)。默认:空

禁用CAS注销:如果选中,您将仅从ownCloud/Nextcloud注销,而不会从您的CAS实例注销。默认:关闭

在第一次CAS登录后自动创建用户?:如果选中,将自动创建经过CAS认证的用户。这意味着,在数据库中尚不存在且通过CAS认证的用户将在他们的第一次登录时创建并存储在ownCloud数据库中。默认:开启

每次CAS登录后更新用户数据?:如果选中,每次用户登录时都将使用CAS提供的数据更新ownCloud用户属性。默认:关闭

禁用CAS单点注销:如果选中,将忽略来自您的CAS服务器的单点注销请求。ownCloud/Nextcloud会话不会因为单点登录而终止。默认:关闭

单点注销服务器:提供可以发送单点注销请求的CAS票证的服务器列表(如果您不需要将注销限制为定义的服务器,请留空)。

在URL中保留CAS票证ID?:如果选中,CAS票证ID不会从URL中删除。注意:潜在的安全风险!只有当您知道自己在做什么时才激活。默认:关闭

覆盖登录按钮标签:覆盖CAS登录按钮标签(仅在Nextcloud中使用)。默认:空

使用CAS保护“公开共享”链接:如果选中,公开共享链接将受到CAS登录的保护。如果用户已经使用有效的ownCloud/Nexctloud会话登录,则不需要额外的CAS登录。默认:关闭

映射

如果CAS提供额外的属性,user_cas可以检索它们的值。由于它们在不同的设置中名称不同,因此有必要将ownCloud属性名称映射到CAS属性名称。

用户ID:CAS中用户ID属性的名称。只有在需要使用特定的CAS属性作为用户ID时才填写此字段。如果留空,则使用默认的CAS用户ID。默认:空

电子邮件:CAS中电子邮件属性的名称。默认:空

显示名称:CAS中显示名称属性(这可能是一个用户的“真实姓名”或两个字段的组合,如:firstnames+surnames)。默认:空

:CAS中组属性的名称。默认:空

配额:CAS中配额属性的名称。配额可以是数值字节数或可读的字符串,如512MB。默认:空

锁定组:不会解除链接的组。在登录后更新用户时,这些组被保留。请提供不带空白的逗号分隔列表(例如:group1,group2)。默认:空

默认组(在自动创建用户时使用):在身份验证后自动创建用户时,如果用户没有CAS组,则将这些组设置为默认值。请提供不带空白的逗号分隔列表(例如:group1,group2)。默认:空

授权CAS组:这些组的成员被授权使用ownCloud实例。此设置特别有用,如果你的CAS实例本身不处理授权。请提供不带空格的逗号分隔列表(例如:group1,group2)。默认:空

组配额:为通过CAS认证的用户组定义配额。请提供不带空格的逗号分隔列表,并在组名和配额之间用冒号隔开(例如:group1:10GB,group2:500MB)。默认:空

组名过滤器:定义一个仅包含组名允许字符的过滤器(PHP正则表达式语法!)。ownCloud/Nextcloud核心会在每个定义后截断63个字符的组名,并附加水平省略号。默认为空时:a-zA-Z0-9\.\-_ @

组名:替换元音符号:激活以从组名中过滤掉德语的元音符号。仅在“映射”中的“组”填写后生效。默认:关闭

组名:JSON解码:激活以在组字段中对提供的数据进行JSON解码。仅在“映射”中的“组”填写,并且您的CAS服务器使用JSON语法时生效。默认:关闭

用户默认组:为每个具有UID的用户创建默认组,并可选地添加前缀。默认:关闭,无前缀

ECAS设置

自版本1.5起,user_cas为使用欧洲委员会ECAS服务器实现提供支持。

使用ECAS属性解析器?:激活ECAS属性解析器以启用解析由欧洲委员会ECAS实现提供的组(在了解清楚后再激活)。

请求完整用户详细信息?:激活以在ECAS回调中请求完整用户配置文件(在了解清楚后再激活)。

ECAS强度:设置ECAS实例在验证用户票据时使用的身份验证强度(在了解清楚后再选择)。

ECAS保证级别:设置ECAS实例在验证用户票据时使用的保证级别(在了解清楚后再选择)。

查询ECAS组:定义在验证用户票据时应查询哪些ECAS组。请提供不带空格的逗号分隔列表(例如:GROUP1,GROUP2或使用*表示所有组)。(在了解清楚后再选择)。

在这些客户端IP上不使用多因素身份验证:客户端IP地址(或地址范围)的逗号分隔列表,如果“ECAS保证级别”至少为中等,则不会强制使用多因素身份验证(例如:192.168.1.1-254,192.168.2.5)。(在了解清楚后再填写)。

导入CLI

自版本1.7.2起,user_cas为从ActiveDirectory LDAP导入用户提供支持。

ActiveDirectory (LDAP):提供连接到您的AD LDAP服务器所需的信息

LDAP-Host:提供LDAP主机信息。设置要使用的协议、主机和端口。默认:空

LDAP-用户和域:提供用于对LDAP连接进行身份验证的LDAP用户和域。默认:空

LDAP-用户密码:设置用户密码(见上文)。默认:空

LDAP Base DN:设置用于查询的LDAP基础唯一名称(DN)。默认:空

LDAP同步过滤器:定义在从LDAP查询相应用户时要使用的过滤器。默认:空

LDAP同步分页大小(1-1500):根据您的LDAP服务器设置定义LDAP查询响应的分页大小。默认:1500

CLI属性映射:提供将您的AD LDAP用户映射到ownCloud所需的信息

UID/用户名:您的LDAP响应中uid/用户名属性的名称。默认:空

显示名称:您的LDAP响应中显示名称属性(这可能是用户的“真实姓名”或两个字段的组合,例如:givenname+sn)的名称。默认:空

邮箱:LDAP响应中的邮箱属性名称。默认:空

:LDAP响应中的组属性名称。默认:空

组名称字段:在您的组节点中设置的组名称的LDAP属性名称。如果没有设置或找到名称字段,则将使用组的DN作为组名称。默认:空

配额:LDAP响应中的配额属性名称。配额可以是数值字节数值或可读字符串,如1GB或512MB。默认:空

启用:LDAP响应中的启用属性名称。在导入时设置账户为启用/禁用,其中启用=1和禁用=0。默认:空

与以下启用属性进行位与运算:提供位与运算以定义账户的启用状态。仅当您的LDAP的启用属性值不是0|1时使用。默认:空

合并账户:激活以启用账户合并。默认:关闭

合并时优先启用账户而非禁用账户:激活以在合并时优先启用第二个账户而非禁用的主要账户。仅当合并账户启用时才生效。默认:关闭

通过以下属性合并两个活动账户:您想要通过该属性合并两个激活账户的LDAP响应中的属性名称。仅当合并账户启用时才生效。默认:空

通过以下属性合并两个活动账户:过滤器字符串:定义用于通过以下属性合并的过滤器字符串,以定义在合并时应优先选择哪个激活账户。仅当通过以下属性合并设置且合并账户启用时才生效。默认:空

PHP-CAS库

设置PHP-CAS库选项

覆盖phpCAS路径(CAS.php文件):设置自定义的CAS.php文件路径,该文件位于您要使用的jasig/phpcas库版本的根目录下。默认:空,表示使用在user_cas文件夹中通过composer安装的依赖项。

PHP CAS调试文件:设置自定义的phpcas调试文件路径。位于服务器根目录下。默认:空

其他信息

  • 如果您启用“CAS登录后自动创建用户”选项,如果用户不存在,则会创建用户。如果此选项禁用且用户不存在,则不允许用户登录ownCloud。

  • 如果您启用“更新用户数据”选项,则在每次登录时,应用程序都会更新用户的显示名称、邮箱、组成员资格和配额。

默认情况下,CAS应用程序将取消链接用户的所有组,并会提供在映射属性中定义的组。如果此映射未定义,则将使用默认组字段的值。如果两者都未定义,则用户将不会被设置任何组。如果设置了锁定组字段,则这些组将不会被从用户中取消链接。

OCC命令

user_cas实现了以下OCC命令

  • cas
    • cas:create-user(向数据库添加一个user_cas用户。)
    • cas:update-user(更新现有用户,如果尚未是CAS用户,则将记录转换为CAS后端。)
    • cas:import-users-ad(从ActiveDirectory LDAP导入用户。)

创建用户

cas:create-user [--display-name [DISPLAY-NAME]] [--email [EMAIL]] [-g|--group [GROUP]] [-o|--quota [QUOTA]] [-e|--enabled [ENABLED]] [--] <uid>
  • 参数(必需)

    • uid:用户的uid
  • 选项(可选)

    • --display-name:用户的新显示名称。
    • --email:用户的新邮箱。
    • -g | --group:用户的新组,可以多次使用(例如,-g Family -g Work)以添加多个组。
    • -o | --quota:用户的新配额,可以是数值字节数值或可读值(例如,1GB)。
    • -e | --enabled:启用或禁用用户。设置-e 1启用用户,设置-e 0禁用用户。

注意:受保护的组永远不会从用户中取消链接!另请参阅

更新用户

cas:update-user [--display-name [DISPLAY-NAME]] [--email [EMAIL]] [-g|--group [GROUP]] [-o|--quota [QUOTA]] [-e|--enabled [ENABLED]] [-c|--convert-backend [CONVERT-BACKEND]] [--] <uid>
  • 参数(必需)

    • uid:用户的uid
  • 选项(可选)

    • --display-name:用户的新显示名称。
    • --email:用户的新邮箱。
    • -g | --group:用户的新组,可以多次使用(例如,-g Family -g Work)以添加多个组。
    • -o | --quota:用户的新配额,可以是数值字节数值或可读值(例如,1GB)。
    • -e | --enabled:启用或禁用用户。设置-e 1启用用户,设置-e 0禁用用户。
    • -c | --convert-backend: 设置是否将用户的后端转换为CAS后端。设置-c 1将后端转换为CAS。 警告:这不可撤销!

注意:受保护的组永远不会从用户中取消链接!另请参阅

从ActiveDirectory (LDAP)导入用户

cas:import-users-ad [-d|--delta-update [1]] [-c|--convert-backend [1]]
  • 选项(可选)
    • -d | --delta-update: 启用或禁用账户的增量更新。设置-d 1启用账户更新。
    • -c | --convert-backend: 设置是否将用户的后端转换为CAS后端。设置-c 1将后端转换为CAS。 警告:这不可撤销!

附加信息:如果您想自动化ActiveDirectory的导入,请在您的web服务器用户(例如,基于debian的Linux系统上的www-data)的cronjob中调用此命令。

附加信息:如果您需要额外的调试信息,请在您的命令中使用-vv-vvv选项来提高调试级别。要静音输出,请使用-q选项。

作为每日cronjob使用示例,具有增量更新和后端转换(如有必要),输出将被置零:

0 0 * * * /usr/bin/php /path/to/owncloud/occ cas:import-users-ad -d 1 -c 1 -q >/dev/null 2>&1

错误和支持

请将错误报告和反馈贡献给GitHub Issues

通过felixrupp.com提供商业支持和功能实现。

关于

许可

AGPL 3.0或更高版本 - https://gnu.ac.cn/licenses/agpl-3.0.html

作者

当前版本,自1.4.0起

旧版本

链接