如有疑问,请看视频:CAS单点登录(第7版)_在线视频教程-CSDN程序员研修院
1. 账户注册
1.1. 概述
1.1.1. 帐户(自助)注册
CAS 提供了一个适度的工作流程来处理自助账户注册。启用后,账户注册工作流程允许用户向 CAS 注册账户,以便:
提供一组可自定义的初始详细信息,例如名字、姓氏、电子邮件,以启动帐户创建请求。
通过电子邮件或短信接收包含说明的激活链接,以验证账户创建请求。
完成帐户创建请求、选择密码、安全问题等。
最后,将账户注册请求提交给 Identity Manager 系统进行配置和后续流程。
使用说明
在撰写本文时,CAS 是一种身份管理解决方案,不打算提供此类系统中常见的功能或支持功能,例如复杂的供应工作流、账户生命周期管理、入站/出站属性映射等。虽然所有开源软件都可以无限定制,但此处描述的功能最终需要一个或多个记录系统来保存和管理用户帐户。
通过在 WAR 覆盖中包含以下依赖项来启用账户注册和注册功能:
Apache Maven
Gradle
BOM - Spring
BOM - Gradle
资源
1 2 3 4 5 6 7 8 9 10 | dependencies { /* The following platform references should be included automatically and are listed here for reference only. implementation enforcedPlatform("org.apereo.cas:cas-server-support-bom:${project.'cas.version'}") implementation platform(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES) */ implementation "org.apereo.cas:cas-server-support-account-mgmt"} |
1.1.2. 配置
CAS 配置目录中提供了以下设置和属性:
必填
自选
签名和加密
密码策略
笔记
下面列出的配置设置在 CAS 配置元数据中标记为 Required。此标志表示可能需要该设置的存在才能激活或影响 CAS 功能的行为,并且通常应进行审查、可能拥有和调整。如果为该设置分配了默认值,则无需严格将该设置放在配置副本中,但仍应对其进行检查以确保它符合您的部署预期。
Show entries
搜索:
· cas.account-registration.core.crypto.encryption.key= 加密密钥是一个 JWT,其长度由加密密钥大小设置定义。 此设置支持 Spring 表达式语言。 org.apereo.cas.configuration.model.core.util.EncryptionJwtCryptoProperties. 如何配置此属性? |
· cas.account-registration.core.crypto.signing.key= 签名密钥是一个 JWT,其长度由签名密钥大小设置定义。 此设置支持 Spring 表达式语言。 org.apereo.cas.configuration.model.core.util.SigningJwtCryptoProperties. 如何配置此属性? |
· cas.account-registration.core.password-policy-pattern=^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,10} 一个 String 值,表示密码策略正则表达式模式。最少 8 个字符,最多 10 个字符,至少 1 个大写字母、1 个小写字母、1 个数字和 1 个特殊字符。 此设置支持正则表达式模式。[?]. org.apereo.cas.configuration.model.support.account.AccountManagementRegistrationCoreProperties. 如何配置此属性? |
· cas.account-registration.core.registration-properties.location= 在 CAS 能够自动监视底层资源的更改并动态检测更新和修改的情况和场景中,您可以将以下设置指定为环境变量或系统属性,其值为 false,以禁用资源观察程序: org.apereo.cas.configuration.model.SpringResourceProperties. 如何配置此属性? |
显示 1 到 4 的 4 个条目
上一页1下一页
1.1.3. 账户注册申请
帐户注册请求最初需要大量用户输入以启动注册过程。对于初学者,CAS 需要一组开箱即用的默认字段和输入,并且与往常一样,可以使用与以下映射匹配的 JSON 文档以元数据形式描述此类详细信息和字段:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | { "@class" : "java.util.HashMap", "field-name" : { "@class" : "org.apereo.cas.acct.AccountRegistrationProperty", "name" : "field-name", "required" : true, "label" : "cas.screen.acct.label.field", "title" : "cas.screen.acct.title.field", "pattern": ".+", "type": "email", "values" : [ "java.util.ArrayList", [ "sample@gmail.com", "sample2@hotmail.com" ] ], "order": 0 }} |
支持以下字段:
田 | 描述 |
name | 要在注册屏幕上显示的输入字段的名称。 |
required | 此输入是否是必需的。默认为 false。 |
label | CAS 语言包中消息键的键,用于描述此输入的标签文本。 |
title | CAS 语言包中消息键的键,用于描述此输入的标题文本。 |
pattern | 正则表达式模式,用于强制和验证输入值的可接受模式。 |
type | 此输入字段的类型(即 select、email、phone、text 等)。 |
order | 此输入在屏幕上的显示顺序。 |
values | 当 type 设置为 select 时,要按顺序显示的值列表。 |
有可能吗...?
您现在一定想知道是否可以自定义屏幕并包含其他类型的字段、表单和值。通常,只要输入字段的 type 足够简单且受支持,您应该能够使用 JSON 元数据来描述其他字段。如果您的类型不受现有元数据支持,则需要自行构建输入字段以及链接到该字段的工作流程和规则作为自定义代码。
可以使用以下组件自定义用户注册元数据和字段的加载和处理:
1 2 3 4 | @Beanpublic AccountRegistrationPropertyLoader accountMgmtRegistrationPropertyLoader() { return new MyAccountRegistrationPropertyLoader(resource);} |
请参阅本指南,了解有关如何将配置注册到 CAS 运行时的更多信息。
1.1.3.1. 账户注册验证
可以使用以下组件自定义注册请求的验证:
1 2 3 4 | @Beanpublic AccountRegistrationRequestValidator accountMgmtRegistrationRequestValidator() { return new MyAccountRegistrationRequestValidator();} |
请参阅本指南,了解有关如何将配置注册到 CAS 运行时的更多信息。
1.1.4. 沟通策略
帐户创建请求应使用专用激活链接进行验证,该链接可通过邮件或短信与用户共享。激活链接应在可配置的时间段内保持有效。
要了解有关可用选项的更多信息,请参阅本指南或本指南,或本指南。
CAS 配置目录中提供了以下设置和属性:
必填
自选
电子邮件服务器
笔记
下面列出的配置设置在 CAS 配置元数据中标记为 Required。此标志表示可能需要该设置的存在才能激活或影响 CAS 功能的行为,并且通常应进行审查、可能拥有和调整。如果为该设置分配了默认值,则无需严格将该设置放在配置副本中,但仍应对其进行检查以确保它符合您的部署预期。
Show entries
搜索:
· cas.account-registration.mail.attribute-name= 指示此邮件的目标电子邮件地址的主体属性名称。这些属性必须已解析并可供 CAS 主体使用。当指定了多个属性时,将根据可用的 CAS 主体检查每个属性,以查找电子邮件地址值,这可能会导致发送多封电子邮件。 此设置支持 Spring 表达式语言。 org.apereo.cas.configuration.model.support.email.EmailProperties. 如何配置此属性? |
· cas.account-registration.mail.from= 电子邮件发件人地址。 org.apereo.cas.configuration.model.support.email.EmailProperties. 如何配置此属性? |
· cas.account-registration.mail.subject= 主题可以定义为 verbaitm,也可以使用语法 #{subject-language-key} 指向语言包中的消息键。此键应指向在相应语言包中定义的有效消息,然后通过活动区域设置选取该消息。如果语言代码无法解析实际主题,则将使用默认主题值。 此设置支持 Spring 表达式语言。 org.apereo.cas.configuration.model.support.email.EmailProperties. 如何配置此属性? |
· cas.account-registration.sms.attribute-name= 指示此 SMS 消息的目标电话号码的主体属性名称。该属性必须已解析并可供 CAS 主体使用。 此设置支持 Spring 表达式语言。 org.apereo.cas.configuration.model.support.sms.SmsProperties. 如何配置此属性? |
· cas.account-registration.sms.from= 邮件的发件人地址。 org.apereo.cas.configuration.model.support.sms.SmsProperties. 如何配置此属性? |
显示 1 到 5 的 6 个条目
上一页12下一页
1.1.5. 用户名提取
默认情况下,注册请求允许用户选择用户名,可以使用以下组件自定义注册请求中 usename 字段的构造和提取:
1 2 3 4 | @Beanpublic AccountRegistrationUsernameBuilder accountRegistrationUsernameBuilder() { return new MyAccountRegistrationUsernameBuilder();} |
请参阅本指南,了解有关如何将配置注册到 CAS 运行时的更多信息。
1.2. 账户概况
1.2.1. 帐户 (配置文件) 管理
CAS 中的帐户(配置文件)管理允许经过身份验证的最终用户在类似迷你门户的环境中浏览和/或更新其帐户的某些方面。此门户允许的典型操作可能包括重置密码或更新安全问题、浏览登录活动、注册设备以进行多因素身份验证等。
记得
如果您正在寻找允许最终用户注册、注册和创建帐户的方法,您应该查看帐户注册功能。
功能激活
要激活此功能,必须打开以下功能开关:
1 | CasFeatureModule.AccountManagement.enabled=true |
要了解有关配置功能切换的更多信息,请参阅此页面。
1.2.2. 密码管理
要允许最终用户自愿重置其密码和/或更新其安全问题,必须按照此处指定的说明在 CAS 中启用密码管理功能。
1.2.3. 审核日志活动
默认情况下,帐户管理仪表板允许您检查他们过去 60 天的登录活动。此信息是从 CAS 审计日志中为经过身份验证的用户获取的,必须将其配置为在专用存储服务(如关系数据库等)中记录可审计的登录活动。
1.2.4. 多因素注册设备
如果在 CAS 中打开了多因素身份验证,则某些多重提供程序可能能够为经过身份验证的用户提供已注册的 MFA 设备列表。Multifactor 提供商还允许用户向 CAS 注册其设备并选择加入注册工作流程。
此功能取决于提供商以及它是否能够支持 Account Profile Management 功能。支持以下提供程序:
Duo 安全
谷歌身份验证器
FIDO2 WebAuthn
1.3. 供应
1.3.1. Groovy
1.3.1.1. 帐户(自助)注册 - Groovy Provisioning
帐户注册请求可以提交给外部 Groovy 脚本,该脚本负责在适当的记录系统中管理和存储帐户。
CAS 配置目录中提供了以下设置和属性:
必填
Groovy 脚本
笔记
下面列出的配置设置在 CAS 配置元数据中标记为 Required。此标志表示可能需要该设置的存在才能激活或影响 CAS 功能的行为,并且通常应进行审查、可能拥有和调整。如果为该设置分配了默认值,则无需严格将该设置放在配置副本中,但仍应对其进行检查以确保它符合您的部署预期。
Show entries
搜索:
· cas.account-registration.provisioning.groovy.location= 在 CAS 能够自动监视底层资源的更改并动态检测更新和修改的情况和场景中,您可以将以下设置指定为环境变量或系统属性,其值为 false,以禁用资源观察程序: org.apereo.cas.configuration.model.support.account.provision.GroovyAccountManagementRegistrationProvisioningProperties. 如何配置此属性? |
显示 1 到 1 的 1 个条目
上一页1下一页
该脚本应与以下内容匹配:
1 2 3 4 5 6 7 8 9 | import org.apereo.cas.acct.*import org.springframework.context.ApplicationContext def run(Object[] args) { def (registrationRequest,applicationContext,logger) = args logger.info("Provisioning account registration request ${registrationRequest}") return AccountRegistrationResponse.success()} |
传递的参数如下:
参数 | 描述 |
registrationRequest | 表示账户注册请求的对象。 |
applicationContext | 表示 Spring ApplicationContext 的对象。 |
logger | 负责发出日志消息的对象,例如 logger.info(...) |
要准备 CAS 以支持 Apache Groovy 并与之集成,请查看本指南。
1.3.2. REST
1.3.2.1. 帐户(自助)注册 - REST 配置
帐户注册请求可以通过 POST 提交到外部 REST API,该 POST 负责在适当的记录系统中管理和存储帐户。
CAS 配置目录中提供了以下设置和属性:
必填
自选
笔记
下面列出的配置设置在 CAS 配置元数据中标记为 Required。此标志表示可能需要该设置的存在才能激活或影响 CAS 功能的行为,并且通常应进行审查、可能拥有和调整。如果为该设置分配了默认值,则无需严格将该设置放在配置副本中,但仍应对其进行检查以确保它符合您的部署预期。
Show entries
搜索:
· cas.account-registration.provisioning.rest.url= 用于联系和检索属性的终端节点 URL。 此设置支持 Spring 表达式语言。 org.apereo.cas.configuration.model.support.account.provision.RestfulAccountManagementRegistrationProvisioningProperties. 如何配置此属性? |
显示 1 到 1 的 1 个条目
上一页1下一页
API 调用的预期响应状态代码为 200。API 请求正文将包含账户注册请求,如下所示:
1 2 3 4 5 6 7 8 | { "@class":"org.apereo.cas.acct.AccountRegistrationRequest", "properties":{ "@class":"java.util.LinkedHashMap", "username": "casuser", "field1": "value1" }} |
1.3.3. SCIM
1.3.3.1. 帐户(自助)注册 - SCIM 配置
CAS 配置目录中提供了以下设置和属性:
自选
笔记
下面列出的配置设置在 CAS 配置元数据中标记为 Optional(可选)。This标志表示在最终用户 CAS 配置中不需要立即存在该设置,因为分配了默认值,或者该功能的激活不受设置值有条件地控制。换句话说,仅当需要修改默认值或需要打开由设置控制的功能时,才应在配置中包含此字段。
Show entries
搜索:
· cas.account-registration.provisioning.scim.enabled=false 是否应为委托的身份验证尝试启用到 SCIM 目标的预置。 org.apereo.cas.configuration.model.support.account.provision.ScimAccountManagementRegistrationProvisioningProperties. 如何配置此属性? |
显示 1 到 1 的 1 个条目
上一页1下一页
可以使用 CAS SCIM 配置来执行配置任务。启用并配置后,可以通过 SCIM 将帐户注册请求配置到其他系统。
用法
对委托身份验证的 SCIM 集成支持仅通过 SCIM v2 处理。
1.3.4. Apache Syncope
1.3.4.1. 帐户(自助)注册 - Apache Syncope 配置
帐户注册请求可以提交给 Apache Syncope。通过在 WAR 覆盖中包含以下依赖项来启用支持:
Apache Maven
Gradle
BOM - Spring
BOM - Gradle
资源
1 2 3 4 5 6 7 8 9 10 | dependencies { /* The following platform references should be included automatically and are listed here for reference only. implementation enforcedPlatform("org.apereo.cas:cas-server-support-bom:${project.'cas.version'}") implementation platform(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES) */ implementation "org.apereo.cas:cas-server-support-syncope-authentication"} |
CAS 配置目录中提供了以下设置和属性:
必填
自选
笔记
下面列出的配置设置在 CAS 配置元数据中标记为 Required。此标志表示可能需要该设置的存在才能激活或影响 CAS 功能的行为,并且通常应进行审查、可能拥有和调整。如果为该设置分配了默认值,则无需严格将该设置放在配置副本中,但仍应对其进行检查以确保它符合您的部署预期。
Show entries
搜索:
· cas.account-registration.provisioning.syncope.basic-auth-password= 指定 REST 身份验证的密码。 org.apereo.cas.configuration.model.support.syncope.SyncopeAccountManagementRegistrationProvisioningProperties. 如何配置此属性? |
· cas.account-registration.provisioning.syncope.basic-auth-username= 指定 REST 身份验证的用户名。 org.apereo.cas.configuration.model.support.syncope.SyncopeAccountManagementRegistrationProvisioningProperties. 如何配置此属性? |
· cas.account-registration.provisioning.syncope.domain=Master 用于身份验证等的 Syncope 域。多个域可以用逗号分隔。每个域条目都会导致 CAS 进行单独的身份验证尝试和事务。 org.apereo.cas.configuration.model.support.syncope.SyncopeAccountManagementRegistrationProvisioningProperties. 如何配置此属性? |
· cas.account-registration.provisioning.syncope.realm=/ 用于用户配置的 Syncope 领域。Realm 定义分层安全域树,主要用于包含用户。根领域包含所有内容,而其他领域可以看作是将实体总数拆分为较小池的容器。 org.apereo.cas.configuration.model.support.syncope.SyncopeAccountManagementRegistrationProvisioningProperties. 如何配置此属性? |
· cas.account-registration.provisioning.syncope.url= 用于 REST 的 Syncope 实例 URL。 此设置支持 Spring 表达式语言。 org.apereo.cas.configuration.model.support.syncope.SyncopeAccountManagementRegistrationProvisioningProperties. 如何配置此属性? |
显示 1 到 5 个条目中的 5 个
上一页1下一页
1.3.5. 自定义
1.3.5.1. 帐户(自助)注册 - 自定义配置
帐户注册请求可以提交给自定义实施,该实施负责在适当的记录系统中管理和存储帐户。
1 2 3 4 5 6 | @Beanpublic AccountRegistrationProvisionerConfigurer customProvisioningConfigurer() { return () -> { return new CustomAccountRegistrationProvisioner(); };} |
请参阅本指南,了解有关如何将配置注册到 CAS 运行时的更多信息。