CAS单点登录(第7版)8.委托和代理

CAS单点登录(第7版)8.委托和代理

精选文章moguli202025-03-08 13:44:2128A+A-

如有疑问,请看视频:CAS单点登录(第7版)_在线视频教程-CSDN程序员研修院

一个 OAuth2 客户端在委派模式下使用 CAS 在外部 SAML2 身份提供商、另一个 CAS 服务器或 Facebook 上进行身份验证,并在该流的末尾接收 OAuth2 用户配置文件。CAS 服务器能够充当代理,在中间执行协议转换。

1.1.1.1. 身份提供商注册

请参阅本指南。

1.1.1.2. 配置文件属性

在受 CAS 保护的应用程序中,通过服务票证验证,用户信息被推送到 CAS 客户端,从而被推送到应用程序本身。

用户的标识符始终推送到 CAS 客户端。对于用户属性,它既涉及服务器的配置,也涉及验证服务工单的方式。

在 CAS 服务器端,要将属性推送到 CAS 客户端,应在预期的服务中对其进行配置:

1

2

3

4

5

6

7

8

9

10

11

{

"@class" : "org.apereo.cas.services.CasRegisteredService",

"serviceId" : "sample",

"name" : "sample",

"id" : 100,

"description" : "sample",

"attributeReleasePolicy" : {

"@class" : "org.apereo.cas.services.ReturnAllowedAttributeReleasePolicy",

"allowedAttributes" : [ "java.util.ArrayList", [ "name", "first_name", "middle_name" ] ]

}

}

1.1.1.3. 发现选择

请参阅本指南。

1.1.1.4. 身份验证策略

请参阅本指南。

1.1.1.5. 供应

请参阅本指南。

1.1.1.6. 后处理

请参阅本指南。

1.1.1.7. 网络流

委托身份验证的 webflow 配置的某些方面可以通过以下设置进行控制:

CAS 配置目录中提供了以下设置和属性:


自选


笔记

下面列出的配置设置在 CAS 配置元数据中标记为 Optional(可选)。This标志表示在最终用户 CAS 配置中不需要立即存在该设置,因为分配了默认值,或者该功能的激活不受设置值有条件地控制。换句话说,仅当需要修改默认值或需要打开由设置控制的功能时,才应在配置中包含此字段。

Show entries

搜索:


· cas.authn.pac4j.webflow.enabled=true

是否应启用 webflow 自动配置。

org.apereo.cas.configuration.model.core.web.flow.WebflowAutoConfigurationProperties.

如何配置此属性?

· cas.authn.pac4j.webflow.order=0

配置 webflow 的顺序。

org.apereo.cas.configuration.model.core.web.flow.WebflowAutoConfigurationProperties.

如何配置此属性?

显示 1 到 2 的 2 个条目

上一页1下一页

1.1.1.8. 故障排除

要启用其他日志记录,请配置 log4j 配置文件以添加以下级别:

1

2

3

4

5

6

...

...

1.1. 身份验证策略

1.1.1. 委托身份验证 - 身份验证策略

服务定义可以通过定义自己的访问策略和身份验证策略来有条件地授权使用外部身份提供商:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

{

"@class" : "org.apereo.cas.services.CasRegisteredService",

"serviceId" : "sample",

"name" : "sample",

"id" : 100,

"accessStrategy" : {

"@class" : "org.apereo.cas.services.DefaultRegisteredServiceAccessStrategy",

"delegatedAuthenticationPolicy" : {

"@class" : "org.apereo.cas.services.DefaultRegisteredServiceDelegatedAuthenticationPolicy",

"allowedProviders" : [ "java.util.ArrayList", [ "Facebook", "Twitter" ] ],

"permitUndefined": true,

"exclusive": false,

"selectionStrategy": "file:/path/to/script.groovy"

}

}

}

身份验证策略支持以下字段:

类型

描述

allowedProviders

允许的提供者列表应包含外部身份提供者名称(即客户端名称)。

permitUndefined

决定在未明确定义允许的提供者的情况下是否应授予访问权限。

exclusive

决定是否应将身份验证专门限制为允许的提供者,禁用其他方法,例如用户名/密码等。

selectionStrategy

决定如何以脚本化方式选择和重定向到身份提供者。

1.1.2. 配置

CAS 配置目录中提供了以下设置和属性:

必填

自选

签名和加密


Groovy 脚本


笔记

下面列出的配置设置在 CAS 配置元数据中标记为 Required。此标志表示可能需要该设置的存在才能激活或影响 CAS 功能的行为,并且通常应进行审查、可能拥有和调整。如果为该设置分配了默认值,则无需严格将该设置放在配置副本中,但仍应对其进行检查以确保它符合您的部署预期。

Show entries

搜索:


· cas.authn.pac4j.core.discovery-selection.json.location=

在 CAS 能够自动监视底层资源的更改并动态检测更新和修改的情况和场景中,您可以将以下设置指定为环境变量或系统属性,其值为 false,以禁用资源观察程序:
org.apereo.cas.util.io.PathWatcherService。

org.apereo.cas.configuration.model.support.pac4j.Pac4jDelegatedAuthenticationDiscoverySelectionJsonProperties.

如何配置此属性?

· cas.authn.pac4j.core.discovery-selection.selection-type=MENU

指示如何控制标识提供者的选择和显示。可用值如下:

MENU将列出定义的身份提供商供用户选择。

DYNAMIC首先预先构建定义的身份提供商,然后在运行时根据用户属性、属性、域标识符等动态选择一个身份提供商。

org.apereo.cas.configuration.model.support.pac4j.Pac4jDelegatedAuthenticationDiscoverySelectionProperties.

如何配置此属性?

· cas.authn.pac4j.core.groovy-authentication-request-customizer.location=

在 CAS 能够自动监视底层资源的更改并动态检测更新和修改的情况和场景中,您可以将以下设置指定为环境变量或系统属性,其值为 false,以禁用资源观察程序:
org.apereo.cas.util.io.PathWatcherService。

org.apereo.cas.configuration.model.SpringResourceProperties.

如何配置此属性?

· cas.authn.pac4j.core.groovy-provider-post-processor.location=

在 CAS 能够自动监视底层资源的更改并动态检测更新和修改的情况和场景中,您可以将以下设置指定为环境变量或系统属性,其值为 false,以禁用资源观察程序:
org.apereo.cas.util.io.PathWatcherService。

org.apereo.cas.configuration.model.SpringResourceProperties.

如何配置此属性?

· cas.authn.pac4j.core.groovy-redirection-strategy.location=

在 CAS 能够自动监视底层资源的更改并动态检测更新和修改的情况和场景中,您可以将以下设置指定为环境变量或系统属性,其值为 false,以禁用资源观察程序:
org.apereo.cas.util.io.PathWatcherService。

org.apereo.cas.configuration.model.SpringResourceProperties.

如何配置此属性?

显示 1 到 5 的 7 个条目

上一页12下一页


要准备 CAS 以支持 Apache Groovy 并与之集成,请查看本指南。

1.1.3. 自动重定向

有关更多详细信息,请参阅本指南。

1.2. 自动重定向

1.2.1. 委托身份验证 - 自动重定向/选择

默认情况下,可用身份提供商的列表显示在选择菜单中,并允许用户选择提供商。在某些情况下,系统可能会指示浏览器自动重定向到预先选择的身份提供商。

1.2.1.1. 预选身份提供者

可以通过 CAS 配置指示身份提供者始终执行自动重定向,而不管应用程序类型和/或身份验证请求如何。CAS 将所选身份提供者视为处理身份验证请求的主要策略。

1.2.1.2. 身份提供商排他性

来自以下应用程序的身份验证请求将自动重定向到在 CAS 配置中标识为 Twitter 的身份提供商,因为委托的身份验证策略仅允许此提供商的单次独占使用,从而删除了选择菜单和选择其他替代身份验证方法的功能。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

{

"@class" : "org.apereo.cas.services.CasRegisteredService",

"serviceId" : "sample",

"name" : "sample",

"id" : 100,

"accessStrategy" : {

"@class" : "org.apereo.cas.services.DefaultRegisteredServiceAccessStrategy",

"delegatedAuthenticationPolicy" : {

"@class" : "org.apereo.cas.services.DefaultRegisteredServiceDelegatedAuthenticationPolicy",

"allowedProviders" : [ "java.util.ArrayList", [ "Twitter" ] ],

"exclusive": true

}

}}

1.2.1.3. 身份提供商 Cookie 选择

可以选择使用专用 Cookie 跟踪和存储从选择菜单中选择的身份提供商,然后该 Cookie 将在后续尝试自动重定向到身份提供商时使用,跳过选择菜单。

CAS 配置目录中提供了以下设置和属性:


自选


笔记

下面列出的配置设置在 CAS 配置元数据中标记为 Optional(可选)。This标志表示在最终用户 CAS 配置中不需要立即存在该设置,因为分配了默认值,或者该功能的激活不受设置值有条件地控制。换句话说,仅当需要修改默认值或需要打开由设置控制的功能时,才应在配置中包含此字段。

Show entries

搜索:


· cas.authn.pac4j.cookie.auto-configure-cookie-path=true

确定在未配置 Cookie 路径时,是否应根据应用程序上下文路径自动配置 Cookie 路径。

org.apereo.cas.configuration.model.support.pac4j.Pac4jDelegatedAuthenticationCookieProperties.

如何配置此属性?

· cas.authn.pac4j.cookie.domain=

Cookie 域。指定应在其中显示此 Cookie 的域。域名的形式由 RFC 2965 指定。域名以点 (.foo.com) 开头,表示该 Cookie 对指定域名系统 (DNS) 区域中的服务器可见(例如,www.foo.com,但不是 a.b.foo.com)。默认情况下,Cookie 仅返回给发送它们的服务器。

org.apereo.cas.configuration.model.support.pac4j.Pac4jDelegatedAuthenticationCookieProperties.

如何配置此属性?

· cas.authn.pac4j.cookie.enabled=false

确定是否应启用 Cookie 设置以跟踪委托的身份验证选项和身份提供商。

org.apereo.cas.configuration.model.support.pac4j.Pac4jDelegatedAuthenticationCookieProperties.

如何配置此属性?

· cas.authn.pac4j.cookie.http-only=true

如果此 Cookie 包含 HttpOnly 属性,则为 true。这意味着脚本引擎(如 javascript)不应访问 cookie。

org.apereo.cas.configuration.model.support.pac4j.Pac4jDelegatedAuthenticationCookieProperties.

如何配置此属性?

· cas.authn.pac4j.cookie.max-age=-1

Cookie 的最长期限,以秒为单位指定。默认情况下,-1 表示 Cookie 将一直存在,直到浏览器关闭。正值表示 Cookie 将在该秒数后过期。请注意,该值是 Cookie 过期的最长期限,而不是 Cookie 的当前期限。负值表示 Cookie 不会永久存储,并且将在 Web 浏览器退出时删除。零值会导致 Cookie 被删除。

此设置支持java.time.Duration 语法 [?]。

org.apereo.cas.configuration.model.support.pac4j.Pac4jDelegatedAuthenticationCookieProperties.

如何配置此属性?

显示 1 到 5 的 9 个条目

上一页12下一页

1.2.1.4. Identity Provider Groovy 选择

给定身份提供者的自动重定向策略也可以通过 Groovy 资源动态决定,其路径是通过 CAS 设置定义的。

CAS 配置目录中提供了以下设置和属性:

必填


Groovy 脚本


笔记

下面列出的配置设置在 CAS 配置元数据中标记为 Required。此标志表示可能需要该设置的存在才能激活或影响 CAS 功能的行为,并且通常应进行审查、可能拥有和调整。如果为该设置分配了默认值,则无需严格将该设置放在配置副本中,但仍应对其进行检查以确保它符合您的部署预期。

Show entries

搜索:


· cas.authn.pac4j.core.groovy-redirection-strategy.location=

在 CAS 能够自动监视底层资源的更改并动态检测更新和修改的情况和场景中,您可以将以下设置指定为环境变量或系统属性,其值为 false,以禁用资源观察程序:
org.apereo.cas.util.io.PathWatcherService。

org.apereo.cas.configuration.model.SpringResourceProperties.

如何配置此属性?

显示 1 到 1 的 1 个条目

上一页1下一页


Groovy 脚本将具有以下轮廓:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

import org.apereo.cas.web.*

import org.pac4j.core.context.*

import org.apereo.cas.pac4j.*

import org.apereo.cas.web.support.*

import java.util.stream.*

import java.util.*

import org.apereo.cas.configuration.model.support.delegation.*

def run(Object[] args) {

def (requestContext,service,registeredService,providers,applicationContext,logger) = args

providers.forEach(provider -> {

logger.info("Checking ${provider.name}...")

if (provider.name.equals("Twitter")) {

provider.autoRedirectType = DelegationAutoRedirectTypes.CLIENT

return provider

}

})

return null}

要准备 CAS 以支持 Apache Groovy 并与之集成,请查看本指南。

以下参数将传递给脚本:

参数

描述

requestContext

对 Spring Webflow 请求上下文的引用,如 RequestContext。

service

将应用程序身份验证请求引用为 Service(如果有)。

registeredService

对已注册服务定义的引用(如果有)。

providers

对标识为
DelegatedClientIdentityProviderConfiguration 的身份提供程序配置集的引用。

applicationContext

将应用程序上下文引用为 ApplicationContext。

logger

负责发出日志消息的对象,例如 logger.info(...)

1.2.1.5. 每个服务的身份提供者选择

给定身份提供者的自动重定向策略也可以通过 Groovy 资源动态决定,该资源的路径直接在服务定义中指定,作为身份验证策略的提供者选择策略的一部分:

1

2

3

4

5

6

7

8

9

10

11

12

13

{

"@class" : "org.apereo.cas.services.CasRegisteredService",

"serviceId" : "sample",

"name" : "sample",

"id" : 100,

"accessStrategy" : {

"@class" : "org.apereo.cas.services.DefaultRegisteredServiceAccessStrategy",

"delegatedAuthenticationPolicy" : {

"@class" : "org.apereo.cas.services.DefaultRegisteredServiceDelegatedAuthenticationPolicy",

"selectionStrategy": "file:/path/to/script.groovy"

}

}}

用法

如果你愿意,你也可以使用带有 groovy {...} 结构的 Groovy Inline 语法。

要准备 CAS 以支持 Apache Groovy 并与之集成,请查看本指南。参数集合和脚本正文与上面的 Identity Provider Groovy Selection 选项相同。

1.2.1.6. 身份提供者自定义选择

如果您希望创建自己的重定向策略,则需要设计一个组件并将其注册到 CAS 中,如下所示:

1

2

3

4

@Beanpublic DelegatedClientIdentityProviderRedirectionStrategy delegatedClientIdentityProviderRedirectionStrategy() {

return new CustomDelegatedClientIdentityProviderRedirectionStrategy(); }

请参阅本指南,了解有关如何将配置注册到 CAS 运行时的更多信息。

1.3. 发现选择

1.3.1. 委派身份验证发现选择

CAS 可用的外部身份提供者将呈现给用户,并可用于使用以下策略进行发现和选择。

记得

如果您有兴趣使用发现服务支持发现 SAML2 身份提供者,则可能需要查看本指南。

CAS 配置目录中提供了以下设置和属性:

必填

自选


笔记

下面列出的配置设置在 CAS 配置元数据中标记为 Required。此标志表示可能需要该设置的存在才能激活或影响 CAS 功能的行为,并且通常应进行审查、可能拥有和调整。如果为该设置分配了默认值,则无需严格将该设置放在配置副本中,但仍应对其进行检查以确保它符合您的部署预期。

Show entries

搜索:


· cas.authn.pac4j.core.discovery-selection.json.location=

在 CAS 能够自动监视底层资源的更改并动态检测更新和修改的情况和场景中,您可以将以下设置指定为环境变量或系统属性,其值为 false,以禁用资源观察程序:
org.apereo.cas.util.io.PathWatcherService。

org.apereo.cas.configuration.model.support.pac4j.Pac4jDelegatedAuthenticationDiscoverySelectionJsonProperties.

如何配置此属性?

· cas.authn.pac4j.core.discovery-selection.selection-type=MENU

指示如何控制标识提供者的选择和显示。可用值如下:

MENU将列出定义的身份提供商供用户选择。

DYNAMIC首先预先构建定义的身份提供商,然后在运行时根据用户属性、属性、域标识符等动态选择一个身份提供商。

org.apereo.cas.configuration.model.support.pac4j.Pac4jDelegatedAuthenticationDiscoverySelectionProperties.

如何配置此属性?

显示 1 到 2 的 2 个条目

上一页1下一页


菜单

动态

自定义


这是默认且最常见的策略,它允许在登录页面上列出外部身份提供商,允许用户从菜单中订购一个身份提供商,并从选项列表中选择一个身份提供商。

1.4. 配置文件选择

1.4.1. 委托身份验证配置文件选择

可以自定义委托身份验证流程,以允许最终用户选择身份验证配置文件,以防身份提供商生成的用户帐户可以匹配多个记录并链接到多个角色。找到多个匹配项时,CAS 用户界面允许最终用户选择应恢复身份验证的适当配置文件。

使用以下选项查询委托流的凭证解析规则。

LDAP 协议

Groovy

自定义


委托身份验证后的候选配置文件可以在 LDAP 目录中找到。有一些选项可用于从 LDAP 获取每个配置文件的特定属性,并能够指定将使用配置文件标识符的属性。


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-ldap-core"}

CAS 配置目录中提供了以下设置和属性:

必填

自选


LDAP & Active Directory


笔记

下面列出的配置设置在 CAS 配置元数据中标记为 Required。此标志表示可能需要该设置的存在才能激活或影响 CAS 功能的行为,并且通常应进行审查、可能拥有和调整。如果为该设置分配了默认值,则无需严格将该设置放在配置副本中,但仍应对其进行检查以确保它符合您的部署预期。

Show entries

搜索:


· cas.authn.pac4j.profile-selection.ldap[0].base-dn=

要使用的基本 DN。在某些情况下,单个 LDAP 树的不同部分可能被视为 base-dns。可以使用特殊的分隔符指定每个条目并将其连接在一起,而不是为每个单独的 base-dn 复制 LDAP 配置块。用户 DN 按定义的顺序使用所有 base-dn 和 DNresolver 的组合进行检索。如果找到多个 DN,则 DN 解析应失败。否则,将返回找到的第一个 DN。通常的语法是:subtreeA,dc=example,dc=net|subtreeC,dc=example,dc=net。

org.apereo.cas.configuration.model.support.pac4j.Pac4jDelegatedAuthenticationLdapProfileSelectionProperties.

如何配置此属性?

· cas.authn.pac4j.profile-selection.ldap[0].bind-credential=

连接到 LDAP 时要使用的绑定凭证。

org.apereo.cas.configuration.model.support.pac4j.Pac4jDelegatedAuthenticationLdapProfileSelectionProperties.

如何配置此属性?

· cas.authn.pac4j.profile-selection.ldap[0].bind-dn=

连接到 LDAP 时要使用的绑定 DN。注入 LDAP 连接池的 LDAP 连接配置可以使用以下参数进行初始化:

org.apereo.cas.configuration.model.support.pac4j.Pac4jDelegatedAuthenticationLdapProfileSelectionProperties.

如何配置此属性?

· cas.authn.pac4j.profile-selection.ldap[0].ldap-url=

服务器的 LDAP URL。可以指定多个,用空格和/或逗号分隔。

org.apereo.cas.configuration.model.support.pac4j.Pac4jDelegatedAuthenticationLdapProfileSelectionProperties.

如何配置此属性?

· cas.authn.pac4j.profile-selection.ldap[0].search-filter=

您还可以在
file:/path/to/GroovyScript.groovy的语法中提供外部 groovy 脚本,以动态地完全构建最终的过滤器模板。

org.apereo.cas.configuration.model.support.pac4j.Pac4jDelegatedAuthenticationLdapProfileSelectionProperties.

如何配置此属性?

显示 1 到 5 个条目中的 5 个

上一页1下一页

1.5. 供应

1.5.1. 委托身份验证配置

默认情况下,从外部身份提供商提取并合并到 CASauthenticated 主体中的用户配置文件不会在任何位置存储或跟踪。CAS 确实提供了其他选项,允许在 CAS 外部管理此类配置文件和/或将其预置到身份存储中,从而允许您选择将外部/来宾帐户与 CAS 使用的身份验证源等中找到的等效帐户链接。

Groovy

REST

SCIM

CUSTOM


CAS 配置目录中提供了以下设置和属性:


必填


Groovy 脚本


笔记

下面列出的配置设置在 CAS 配置元数据中标记为 Required。此标志表示可能需要该设置的存在才能激活或影响 CAS 功能的行为,并且通常应进行审查、可能拥有和调整。如果为该设置分配了默认值,则无需严格将该设置放在配置副本中,但仍应对其进行检查以确保它符合您的部署预期。

Show entries

搜索:


· cas.authn.pac4j.provisioning.groovy.location=

在 CAS 能够自动监视底层资源的更改并动态检测更新和修改的情况和场景中,您可以将以下设置指定为环境变量或系统属性,其值为 false,以禁用资源观察程序:
org.apereo.cas.util.io.PathWatcherService。

org.apereo.cas.configuration.model.support.pac4j.Pac4jDelegatedAuthenticationGroovyProvisioningProperties.

如何配置此属性?

显示 1 到 1 的 1 个条目

上一页1下一页


可以使用具有以下结构的外部 Groovy 脚本来执行供应任务:

1

2

3

4

def run(Object[] args) {

def (principal,userProfile,client,logger) = args

...}

脚本不会返回值。以下参数将传递给脚本:

参数

描述

principal

包含所有属性和声明的 CAS 身份验证 Principal。

userProfile

从外部身份提供程序中提取的原始 UserProfile。

client

负责 CAS 和身份提供商之间交换的 Client 配置。

logger

负责发出日志消息的对象,例如 logger.info(...)

要准备 CAS 以支持 Apache Groovy 并与之集成,请查看本指南。

1.6. 后处理

1.6.1. 委托身份验证后处理

配置的身份提供商在呈现给用户界面之前可以经历后处理阶段。后处理操作能够更新和调整委托身份提供商的标记和设置,以更改标题、重定向 URL 等。后处理器的一个常见示例是有条件地执行服务器端自动重定向到外部身份提供程序,而不必等待浏览器进行重定向。

CAS 配置目录中提供了以下设置和属性:

必填

Groovy 脚本

笔记

下面列出的配置设置在 CAS 配置元数据中标记为 Required。此标志表示可能需要该设置的存在才能激活或影响 CAS 功能的行为,并且通常应进行审查、可能拥有和调整。如果为该设置分配了默认值,则无需严格将该设置放在配置副本中,但仍应对其进行检查以确保它符合您的部署预期。

Show entries

搜索:


· cas.authn.pac4j.core.groovy-provider-post-processor.location=

在 CAS 能够自动监视底层资源的更改并动态检测更新和修改的情况和场景中,您可以将以下设置指定为环境变量或系统属性,其值为 false,以禁用资源观察程序:
org.apereo.cas.util.io.PathWatcherService。

org.apereo.cas.configuration.model.SpringResourceProperties.

如何配置此属性?

显示 1 到 1 的 1 个条目

上一页1下一页


Groovy 脚本的大纲如下:

1

2

3

4

5

6

7

8

9

10

11

12

import org.apereo.cas.web.*

import org.apereo.cas.web.support.*

import org.springframework.webflow.execution.*

def run(Object[] args) {

def (requestContext,providers,logger) = args

def provider = providers[0]

logger.info("Checking provider ${provider.name}...")

def response = WebUtils.getHttpServletResponseFromExternalWebflowContext(requestContext)

logger.debug("Redirecting to ${provider.redirectUrl}")

response.sendRedirect(provider.redirectUrl);}

传递的参数如下:

参数

描述

requestContext

表示 Spring Webflow 的 RequestContext 的对象。

providers

委托身份提供商配置的集合。

logger

负责发出日志消息的对象,例如 logger.info(...)

1.6.2. 预处理身份验证

您还可以选择在流程的最后一步之前和创建 SSO 会话之前预处理委托的身份验证事件。通过在此处预处理身份验证,可以在最终经过身份验证的主体完全融入 SSO 会话之前对其进行操作和更新。这可以使用以下 bean 定义和实现
DelegatedAuthenticationPreProcessor来完成:

1

2

3

4

@Beanpublic DelegatedAuthenticationPreProcessor myProcessor() {

return new MyDelegatedAuthenticationPreProcessor();}

请参阅本指南,了解有关如何将配置注册到 CAS 运行时的更多信息。

1.7. 请求定制

1.7.1. 委托身份验证请求自定义

可以从 CAS 发送到已配置身份提供商的身份验证 (HTTP) 请求在运行时进行自定义。身份验证请求的此自定义阶段发生在构建请求并将其传递到客户端浏览器之前。在定制员继续之前,它还必须声明其对给定身份提供商和/或请求的支持,并且还有机会确定身份提供商是否有权执行给定请求。

1.7.2. Groovy 定制

可以使用外部 Groovy 脚本自定义身份验证请求。

CAS 配置目录中提供了以下设置和属性:

必填


Groovy 脚本


笔记

下面列出的配置设置在 CAS 配置元数据中标记为 Required。此标志表示可能需要该设置的存在才能激活或影响 CAS 功能的行为,并且通常应进行审查、可能拥有和调整。如果为该设置分配了默认值,则无需严格将该设置放在配置副本中,但仍应对其进行检查以确保它符合您的部署预期。

Show entries

搜索:


· cas.authn.pac4j.core.groovy-authentication-request-customizer.location=

在 CAS 能够自动监视底层资源的更改并动态检测更新和修改的情况和场景中,您可以将以下设置指定为环境变量或系统属性,其值为 false,以禁用资源观察程序:
org.apereo.cas.util.io.PathWatcherService。

org.apereo.cas.configuration.model.SpringResourceProperties.

如何配置此属性?

显示 1 到 1 的 1 个条目

上一页1下一页


Groovy 脚本的大纲如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

import org.apereo.cas.authentication.principal.*

import org.apereo.cas.web.*

import org.apereo.cas.web.support.*

import org.pac4j.core.client.*

import org.pac4j.core.context.*

import org.springframework.context.*

def run(Object[] args) {

def (client,webContext,appContext,logger) = args

logger.info("Checking ${client.name}...")

webContext.setRequestAttribute("customAttribute", "value")}

def supports(Object[] args) {

def (client,webContext,appContext,logger) = args

logger.info("Checking support for ${client.name}...")

return true}

def isAuthorized(Object[] args) {

def (client,webContext,service,appContext,logger) = args

logger.info("Checking authorization for ${client.name}...")

return true}

传递的参数如下:

参数

描述

client

将身份提供者表示为 IndirectClient 的对象。

webContext

将 HTTP 请求/响应表示为 WebContext 的对象。

service

传入应用程序请求的 WebApplicationService。

appContext

Spring ApplicationContext.

logger

负责发出日志消息的对象,例如 logger.info(...)

要准备 CAS 以支持 Apache Groovy 并与之集成,请查看本指南。

1.7.3. 自定义

对于更高级的场景,你也可以设计你的 webflow 异常处理程序,并在运行时将其注册到 CAS:

1

2

3

4

@Beanpublic DelegatedClientAuthenticationRequestCustomizer myCustomizer() {

return new DelegatedClientAuthenticationRequestCustomizer();}

请参阅本指南,了解有关如何将配置注册到 CAS 运行时的更多信息。

1.8. 身份提供商注册

1.8.1. 委托身份验证 - 身份提供商注册

身份提供商是可以验证用户身份的服务器(如 Google、Yahoo 等),而不是 CAS 服务器。例如,如果要将 CAS 身份验证委托给 Twitter,则必须为 Twitter 提供程序添加 OAuth 客户端,一旦向 CAS 教授提供程序设置,这将自动为您完成。

请注意,对于每个提供程序,CAS 服务器都被视为客户端,因此应在外部身份提供程序处声明为 client。声明后,提供程序可以提供密钥和密钥,这也必须在 CAS 配置中定义。

1.8.2. 执行器端点

CAS 提供以下端点:

DELETE

/cas/actuator/delegatedClients

清除加载的身份提供程序,并从 CAS 配置或其他来源重新构建。

GET

/cas/actuator/delegatedClients

1.8.3. Default

可以使用设置向 CAS 注册委托身份验证的身份提供者。

Show entries

搜索:

供应商

参考

苹果

请参阅本指南。

Azure AD

请参阅本指南。

请参阅本指南。

自定义

请参阅本指南。

DropBox

请参阅本指南。

显示 1 到 5 的 21 个条目

上一页1234 5下一页

1.8.4. JDBC

可以使用 SQL 数据库向 CAS 提供用于委托身份验证的身份提供程序。要激活此功能,您需要首先在覆盖中包含以下模块:

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-jpa-util"}

CAS 配置目录中提供了以下设置和属性:

必填

自选


Hibernate 和 JDBC


笔记

下面列出的配置设置在 CAS 配置元数据中标记为 Required。此标志表示可能需要该设置的存在才能激活或影响 CAS 功能的行为,并且通常应进行审查、可能拥有和调整。如果为该设置分配了默认值,则无需严格将该设置放在配置副本中,但仍应对其进行检查以确保它符合您的部署预期。

Show entries

搜索:


· cas.authn.pac4j.jdbc.driver-class=org.hsqldb.jdbcDriver

用于连接到数据库的 JDBC 驱动程序。

org.apereo.cas.configuration.model.support.pac4j.Pac4jDelegatedAuthenticationJdbcProperties.

如何配置此属性?

· cas.authn.pac4j.jdbc.password=

数据库连接密码。

org.apereo.cas.configuration.model.support.pac4j.Pac4jDelegatedAuthenticationJdbcProperties.

如何配置此属性?

· cas.authn.pac4j.jdbc.url=jdbc:hsqldb:mem:cas-hsql-database

数据库连接 URL。

此设置支持 Spring 表达式语言。

org.apereo.cas.configuration.model.support.pac4j.Pac4jDelegatedAuthenticationJdbcProperties.

如何配置此属性?

· cas.authn.pac4j.jdbc.user=sa

数据库用户必须具有足够的权限,才能在需要时处理架构更改和更新。

org.apereo.cas.configuration.model.support.pac4j.Pac4jDelegatedAuthenticationJdbcProperties.

如何配置此属性?

显示 1 到 4 的 4 个条目

上一页1下一页


功能激活

要激活此功能,必须打开以下功能开关:

1

CasFeatureModule.DelegatedAuthentication.jdbc.enabled=true

要了解有关配置功能切换的更多信息,请参阅此页面。

身份提供程序配置应在以下数据库表中找到:

1

2

3

4

5

6

7

CREATE TABLE JdbcIdentityProviderEntity (

id INTEGER IDENTITY PRIMARY KEY,

type VARCHAR(250),

index INTEGER,

name VARCHAR(250),

value VARCHAR(250));

例如,以下 SQL 脚本指示外部 CAS 身份提供程序所需的配置:

1

2

3

4

INSERT INTO JdbcIdentityProviderEntity (type, index, name, value)

VALUES ('cas', 0, 'login-url', 'https://cas.example.org');INSERT INTO JdbcIdentityProviderEntity (type, index, name, value)

VALUES ('cas', 0, 'protocol', 'CAS30');

您会注意到,name 列中的值附加到配置前缀 cas.authn.pac4j 中。支持以下类型:cas 、oidc 、 saml 、 oauth。

1.8.5. REST

可以使用外部 REST 终端节点向 CAS 提供委托身份验证的身份提供商。

CAS 配置目录中提供了以下设置和属性:

必填

自选


笔记

下面列出的配置设置在 CAS 配置元数据中标记为 Required。此标志表示可能需要该设置的存在才能激活或影响 CAS 功能的行为,并且通常应进行审查、可能拥有和调整。如果为该设置分配了默认值,则无需严格将该设置放在配置副本中,但仍应对其进行检查以确保它符合您的部署预期。

Show entries

搜索:


· cas.authn.pac4j.rest.url=

用于联系和检索属性的终端节点 URL。

此设置支持 Spring 表达式语言。

org.apereo.cas.configuration.model.support.pac4j.Pac4jDelegatedAuthenticationRestfulProperties.

如何配置此属性?

显示 1 到 1 的 1 个条目

上一页1下一页


预期的负载类型(通过 CAS 设置控制)可以通过以下方式理解和使用。

PAC4J 封装


这允许 CAS 服务器访问远程 REST 端点,该端点负责在响应正文中生成以下有效负载:



1

2

3

4

5

6

7

8

9

10

{

"callbackUrl": "https://sso.example.org/cas/login",

"properties": {

"github.id": "...",

"github.secret": "...",


"cas.loginUrl.1": "...",

"cas.protocol.1": "..."

}}


上述有效负载中可用properties的语法和集合由 Pac4j 库控制。返回的响应必须附有 200 状态代码。

1.8.6. 缓存

请注意,获取身份提供程序注册数据后,CAS 将使用可配置的过期策略缓存结果,并且仅当缓存内容为空或已失效时,CAS 才会联系终端节点。此缓存由每个 CAS 服务器节点拥有,以防同一集群中有多个节点,并且与缓存交互的操作必须能够将任务应用于所有 CAS 服务器节点的缓存。

1.9. 身份提供商

1.9.1. Apple

1.9.1.1. Apple登录

有关委托身份验证流程的概述,请参阅本指南。

通过在 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-pac4j-oidc"}

1.9.1.2. 配置

CAS 配置目录中提供了以下设置和属性:

必填

自选


笔记

下面列出的配置设置在 CAS 配置元数据中标记为 Required。此标志表示可能需要该设置的存在才能激活或影响 CAS 功能的行为,并且通常应进行审查、可能拥有和调整。如果为该设置分配了默认值,则无需严格将该设置放在配置副本中,但仍应对其进行检查以确保它符合您的部署预期。

Show entries

搜索:


· cas.authn.pac4j.oidc[0].apple.discovery-uri=

用于查找 provide 元数据的发现终端节点。

org.apereo.cas.configuration.model.support.pac4j.oidc.Pac4jAppleOidcClientProperties.

如何配置此属性?

· cas.authn.pac4j.oidc[0].apple.id=

客户端 ID。

此设置支持 Spring 表达式语言。

org.apereo.cas.configuration.model.support.pac4j.oidc.Pac4jAppleOidcClientProperties.

如何配置此属性?

· cas.authn.pac4j.oidc[0].apple.secret=

客户端密钥。

此设置支持 Spring 表达式语言。

org.apereo.cas.configuration.model.support.pac4j.oidc.Pac4jAppleOidcClientProperties.

如何配置此属性?

显示 1 到 3 个条目中的 3 个

上一页1下一页

1.9.2. Microsoft Entra

1.9.2.1. Azure 活动目录

有关委托身份验证流程的概述,请参阅本指南。

通过在 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-pac4j-oidc"}

1.9.2.2. 配置

CAS 配置目录中提供了以下设置和属性:

必填

自选


笔记

下面列出的配置设置在 CAS 配置元数据中标记为 Required。此标志表示可能需要该设置的存在才能激活或影响 CAS 功能的行为,并且通常应进行审查、可能拥有和调整。如果为该设置分配了默认值,则无需严格将该设置放在配置副本中,但仍应对其进行检查以确保它符合您的部署预期。

Show entries

搜索:


· cas.authn.pac4j.oidc[0].azure.discovery-uri=

用于查找 provide 元数据的发现终端节点。

org.apereo.cas.configuration.model.support.pac4j.oidc.Pac4jAzureOidcClientProperties.

如何配置此属性?

· cas.authn.pac4j.oidc[0].azure.id=

客户端 ID。

此设置支持 Spring 表达式语言。

org.apereo.cas.configuration.model.support.pac4j.oidc.Pac4jAzureOidcClientProperties.

如何配置此属性?

· cas.authn.pac4j.oidc[0].azure.secret=

客户端密钥。

此设置支持 Spring 表达式语言。

org.apereo.cas.configuration.model.support.pac4j.oidc.Pac4jAzureOidcClientProperties.

如何配置此属性?

显示 1 到 3 个条目中的 3 个

上一页1下一页

1.9.3. CAS

1.9.3.1. 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-pac4j-cas"}

CAS 配置目录中提供了以下设置和属性:

必填

自选

笔记

下面列出的配置设置在 CAS 配置元数据中标记为 Required。此标志表示可能需要该设置的存在才能激活或影响 CAS 功能的行为,并且通常应进行审查、可能拥有和调整。如果为该设置分配了默认值,则无需严格将该设置放在配置副本中,但仍应对其进行检查以确保它符合您的部署预期。

Show entries

搜索:


· cas.authn.pac4j.cas[0].login-url=

CAS 服务器登录 URL。

org.apereo.cas.configuration.model.support.pac4j.cas.Pac4jCasClientProperties.

如何配置此属性?

· cas.authn.pac4j.cas[0].protocol=CAS20

要使用的 CAS 协议。可接受的值为 CAS10, CAS20, CAS20_PROXY, CAS30, CAS30_PROXY, SAML。

org.apereo.cas.configuration.model.support.pac4j.cas.Pac4jCasClientProperties.

如何配置此属性?

显示 1 到 2 的 2 个条目

上一页1下一页

1.9.4. DropBox

有关委托身份验证流程的概述,请参阅本指南。

通过在 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-pac4j-oidc"}

1.9.4.1. 配置

CAS 配置目录中提供了以下设置和属性:

必填

自选

笔记

下面列出的配置设置在 CAS 配置元数据中标记为 Required。此标志表示可能需要该设置的存在才能激活或影响 CAS 功能的行为,并且通常应进行审查、可能拥有和调整。如果为该设置分配了默认值,则无需严格将该设置放在配置副本中,但仍应对其进行检查以确保它符合您的部署预期。

Show entries

搜索:


· cas.authn.pac4j.dropbox.id=

客户端 ID。

此设置支持 Spring 表达式语言。

org.apereo.cas.configuration.model.support.pac4j.Pac4jDelegatedAuthenticationDropboxProperties.

如何配置此属性?

· cas.authn.pac4j.dropbox.secret=

客户端密钥。

此设置支持 Spring 表达式语言。

org.apereo.cas.configuration.model.support.pac4j.Pac4jDelegatedAuthenticationDropboxProperties.

如何配置此属性?

显示 1 到 2 的 2 个条目

上一页1下一页

1.9.5. 脸书

有关委托身份验证流程的概述,请参阅本指南。

通过在 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-pac4j-oidc"}

1.9.5.1. 配置

CAS 配置目录中提供了以下设置和属性:

必填

自选

笔记

下面列出的配置设置在 CAS 配置元数据中标记为 Required。此标志表示可能需要该设置的存在才能激活或影响 CAS 功能的行为,并且通常应进行审查、可能拥有和调整。如果为该设置分配了默认值,则无需严格将该设置放在配置副本中,但仍应对其进行检查以确保它符合您的部署预期。

Show entries

搜索:


· cas.authn.pac4j.facebook.id=

客户端 ID。

此设置支持 Spring 表达式语言。

org.apereo.cas.configuration.model.support.pac4j.Pac4jDelegatedAuthenticationFacebookProperties.

如何配置此属性?

· cas.authn.pac4j.facebook.secret=

客户端密钥。

此设置支持 Spring 表达式语言。

org.apereo.cas.configuration.model.support.pac4j.Pac4jDelegatedAuthenticationFacebookProperties.

如何配置此属性?

显示 1 到 2 的 2 个条目

上一页1下一页

1.9.6. Twitter

1.9.6.1. Twitter

有关委托身份验证流程的概述,请参阅本指南。

通过在 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-pac4j-oidc"}

1.9.6.2. 配置

CAS 配置目录中提供了以下设置和属性:

必填

自选


笔记

下面列出的配置设置在 CAS 配置元数据中标记为 Required。此标志表示可能需要该设置的存在才能激活或影响 CAS 功能的行为,并且通常应进行审查、可能拥有和调整。如果为该设置分配了默认值,则无需严格将该设置放在配置副本中,但仍应对其进行检查以确保它符合您的部署预期。

Show entries

搜索:


· cas.authn.pac4j.twitter.id=

客户端 ID。

此设置支持 Spring 表达式语言。

org.apereo.cas.configuration.model.support.pac4j.Pac4jDelegatedAuthenticationTwitterProperties.

如何配置此属性?

· cas.authn.pac4j.twitter.secret=

客户端密钥。

此设置支持 Spring 表达式语言。

org.apereo.cas.configuration.model.support.pac4j.Pac4jDelegatedAuthenticationTwitterProperties.

如何配置此属性?

显示 1 到 2 的 2 个条目

上一页1下一页

1.9.7. GitHub的

1.9.7.1. GitHub的

有关委托身份验证流程的概述,请参阅本指南。

通过在 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-pac4j-oidc"}

1.9.7.2. 配置

CAS 配置目录中提供了以下设置和属性:

必填

自选

笔记

下面列出的配置设置在 CAS 配置元数据中标记为 Required。此标志表示可能需要该设置的存在才能激活或影响 CAS 功能的行为,并且通常应进行审查、可能拥有和调整。如果为该设置分配了默认值,则无需严格将该设置放在配置副本中,但仍应对其进行检查以确保它符合您的部署预期。

Show entries

搜索:


· cas.authn.pac4j.github.id=

客户端 ID。

此设置支持 Spring 表达式语言。

org.apereo.cas.configuration.model.support.pac4j.Pac4jDelegatedAuthenticationGitHubProperties.

如何配置此属性?

· cas.authn.pac4j.github.secret=

客户端密钥。

此设置支持 Spring 表达式语言。

org.apereo.cas.configuration.model.support.pac4j.Pac4jDelegatedAuthenticationGitHubProperties.

如何配置此属性?

显示 1 到 2 的 2 个条目

......

点击这里复制本文地址 以上内容由莫古技术网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

莫古技术网 © All Rights Reserved.  滇ICP备2024046894号-2