当前位置: 首页> 健康> 母婴 > 网易企业邮箱和个人邮箱的区别_百度seo新站优化_网络安全有名的培训学校_刷百度指数

网易企业邮箱和个人邮箱的区别_百度seo新站优化_网络安全有名的培训学校_刷百度指数

时间:2025/7/17 16:49:32来源:https://blog.csdn.net/daqiang012/article/details/145654526 浏览次数:0次
网易企业邮箱和个人邮箱的区别_百度seo新站优化_网络安全有名的培训学校_刷百度指数

如有疑问,请看视频:CAS单点登录(第7版)

  1. 协议
    1. 概述
      1. 协议概述

CAS 支持并提供以下协议:

  1. CAS
  2. OAuth
  3. OpenID 连接
  4. WS 联合
  5. SAML1
  6. SAML2
  7. REST 协议
      1. 设计

CAS 将自己定位为一个多语言平台,支持 CAS、SAML2、OAuth2 和 OpenID Connect 等协议。由于出色的社区反馈和采用,这些协议的支持和功能会随着软件的每次迭代和发布而不断改进。虽然几乎所有此类协议在性质和意图上都相似,但它们都有自己特定的绑定、参数、有效负载和安全要求。本节简要介绍了 CAS 如何支持现有协议。

这一切都始于一件相当微不足道的事情:The Bridge。

        1. Bridge

桥接设计模式是一种方法,其中中介位于客户端和服务器之间,来回转换请求。它充当双方之间的纽带,允许对来自客户端的身份验证请求进行翻译、处理和转换,然后“无形地”路由到 CAS,然后再路由到 CAS。

这是一个巧妙的技巧,因为客户端并不关心身份验证请求在提交后如何处理。接收该请求的东西,充当桥梁,可以做任何需要的事情来处理该请求,并最终将某种响应提交回客户端。桥接也不关心外部身份验证系统处理和遵守该请求,以及所有这些处理在内部是如何工作的。bridge 只关心 “我将请求路由到 X。只要 X 把正确的东西还给我,我应该可以继续”。

因此,这座桥在很大程度上是运营的“控制塔”。它会说多种语言和协议,就像任何体面的翻译一样,它了解每种语言的怪癖和细节,因此能够动态地翻译技术术语。

        1. 支持的协议

如果您了解上述策略,那么您会很高兴地了解到 CAS 支持的几乎所有协议都以相同的意图运行。给定的 CAS 部署配备了嵌入式插件/桥/模块,这些插件/桥/模块知道如何使用 SAML2 和 CAS、OAuth2 和 CAS,或 OpenID Connect 和 CAS 或其他语言。例如,当您考虑以下支持 OAuth2 的客户端应用程序的身份验证流时,该等式的右侧始终是 CAS:

  1. CAS 部署已打开 OAuth2 插件。
  2. OAuth2 授权请求将提交到相关的 CAS 终端节点。
  3. OAuth2 插件验证请求并将其转换为 CAS 身份验证请求!
  4. 身份验证请求将路由到相关的 CAS 登录端点。
  5. 用户进行身份验证,CAS 将流路由回 OAuth2 插件,并为插件颁发了服务票证。
  6. OAuth2 插件尝试验证该票证以检索必要的用户配置文件和属性。
  7. 然后,OAuth2 插件通过将配置文件和经过验证的断言转换并转换为客户端应用程序可能需要的内容,继续发出正确的 OAuth2 响应。

 注意

如果 CAS 决定将身份验证委托给外部身份提供商(如 Facebook 或 SAML2 身份提供商),则上述策略将完全相同。

流的右侧始终是 CAS,因为该插件始终将协议请求转换为 CAS 请求。从另一种角度来看,所有协议插件和模块本身都是 CAS 服务器的客户端!他们会收到服务票证,然后像任何其他启用了 CAS 的客户端一样继续验证它们。就像上面一样,对于支持 OAuth2 的客户端来说,所有这些细节都是完全透明的,只要 “正确的东西” 被反馈给客户端,它就不会在乎。

这种方法有一些内部技术和架构优势。即:

CAS 身份验证引擎的核心、流和组件根本不需要修改。毕竟,我们只是在集成另一个客户端,即使它直接嵌入到 CAS 本身中。因此,如果需要,可以很容易地删除对该协议的支持。毕竟,协议每天都会来来去去。最后,就像任何其他 CAS 客户端一样,CAS 服务器的所有功能都随时可用并转换为相关客户端,从而尽可能消除复制和重新创建协议特定配置的需要。例如访问策略、属性发布、用户名提供者等。

    1. CAS
      1. 概述
        1. CAS 协议

CAS 协议是一种简单而强大的基于票证的协议。完整的协议规范可以在这里找到。

它涉及一个或多个客户端和一个服务器。客户端嵌入在 CASified 应用程序(称为“CAS 服务”)中,而 CAS 服务器是一个独立的组件:

  1. CAS 服务器负责对用户进行身份验证并授予对应用程序的访问权限
  2. CAS 客户端保护 CAS 应用程序并从 CAS 服务器检索被授予用户的身份。

关键概念是:

  1. 存储在 TGC Cookie 中的 TGT(Ticket Granting Ticket票证授予票证)表示用户的 SSO 会话。
  2. ST(Service Ticket服务票证)作为 url 中的 GET 参数传输,代表 CAS 服务器为特定用户授予的对 CASified 应用程序的访问权限。
        1. 执行器端点

CAS 提供以下端点:

  POST

/cas/actuator/casValidate 

根据 CAS 协议 v2 生成票证验证响应。

  POST

/cas/actuator/casValidate 

  POST

/cas/actuator/casValidate 

        1. 规格版本

以下规范版本由 Apereo CAS 识别和实施。

当前的 CAS 协议规范是 3.0.3。实际的协议规范可在此处获得,该规范由 Apereo CAS 服务器作为官方参考实现实现。它主要是捕获基于 CAS 协议修订版 2.0 构建的最常见增强功能。除其他功能外,版本 2.0 和 3.0 之间最引人注目的更新是能够通过新的 /p3/serviceValidate 端点返回 authentication/user 属性。

2.0 版协议规范可在 CAS-Protocol-Specification 中找到。

          1. 故障排除

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

1

2

3

4

5

6

...

<Logger name="PROTOCOL_MESSAGE" level="debug" additivity="false">

    <AppenderRef ref="casConsole"/>

<AppenderRef ref="casFile"/>

</Logger>

...

        1. Webflow 图

        1. 代理 Webflow 图

CAS 协议最强大的功能之一是 CAS 服务能够充当另一个 CAS 服务的代理,传输用户身份。

        1. 其他协议

即使 CAS 服务器的主要目标是实现 CAS 协议,也支持将其他协议作为扩展:

  1. OAuth2
  2. SAML1
  3. SAML2
  4. OpenID 连接
  5. REST
  6. WsFederation


        1. 委托身份验证

使用 CAS 协议,还可以将 CAS 服务器配置为将身份验证委托给另一个 CAS 服务器。

      1. 验证
        1. CAS 协议 - 票证验证

正如 CAS 协议规范所指出的,票证验证过程的某些方面可以使用您自己的专用实现进行自定义和增强。

 谨慎

更改 CAS 服务器的内部机制可能会导致有问题的不安全配置,还可能危及大熊猫的数量。只有在考虑并排除所有其他替代方案的情况下,只有在绝对必要的情况下,才应应用此类自定义。

授权

撮合策略

您可以控制是否可以授权票证验证事件以允许操作继续进行。这可以通过提供 ServiceTicketValidationAuthorizer的专用实现并将其注册到适当的配置计划中来完成:

1

2

3

4

@Beanpublic ServiceTicketValidationAuthorizerConfigurer ticketValidationAuthorizer() {

    return plan -> plan.registerAuthorizer(...);}

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

      1.  Delegation
        1. 委托身份验证

CAS 可以充当使用 Pac4j 库的客户端(即服务提供商或代理),并将身份验证委托给:

CAS 服务器

SAML2 身份提供商

OAuth2 提供商,如 Facebook、Twitter、GitHub、Google、LinkedIn 等

OpenID Connect 身份提供商,例如 Google、Apple

ADFS

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

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下一页

 注意

发出身份验证请求的客户端可以是任何类型(SAML、OAuth2、OpenID Connect 等),并且允许使用 CAS 服务器支持并配置为理解的任何协议提交身份验证请求。这意味着您可能有一个 OAuth2 客户端在委派模式下使用 CAS 在外部 SAML2 身份提供商、另一个 CAS 服务器或 Facebook 上进行身份验证,并在该流的末尾接收 OAuth2 用户配置文件。CAS 服务器能够充当代理,在中间执行协议转换。

        1. 身份提供商注册

请参阅本指南。

        1. 配置文件属性

在受 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" ] ]

  }}

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

        1. 发现选择

请参阅本指南。

        1. 身份验证策略

请参阅本指南。

        1. 供应

请参阅本指南。

        1. 后处理

请参阅本指南。

        1. 网络流

委托身份验证的 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. 故障排除

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

1

2

3

4

5

6

...<Logger name="org.pac4j" level="debug" additivity="false">

    <AppenderRef ref="casConsole"/>

    <AppenderRef ref="casFile"/></Logger>

...

    1. OAuth2
      1. 概述
        1. OAuth 协议

您可以通过以下方式配置 CAS 服务器:

OAuth 客户端支持,这意味着可以通过登录页面上的链接将身份验证委托给 CAS、SAML2 或 OpenID Connect 提供商。

OAuth 服务器支持,这意味着您将能够通过 OAuth 2.0 协议与 CAS 服务器通信。

用户管理访问 (UMA) 是一种轻量级访问控制协议,它定义了一个集中式工作流程,以允许实体(用户或公司)管理对其资源的访问。UMA 扩展了 OAuth 协议,并通过在集中式授权服务器(如 CAS)上创建授权策略,为资源所有者提供对其受保护资源的精细管理。授权服务器代表资源所有者向请求方授予委托同意,以授权谁和哪些内容可以访问其数据以及访问其数据的时间。

要了解有关 CAS 中 UMA 支持的更多信息,请参阅本指南。

      1. 身份提供商
        1. 概述
          1. OAuth 身份验证

允许 CAS 充当 OAuth 身份验证提供程序。请查看规范以了解更多信息。

 CAS 作为 OAuth 服务器

本页专门介绍如何为 CAS 启用 OAuth 身份提供商服务器支持。如果您希望让 CAS 充当 OAuth/OpenID 客户端,与其他提供者(如 Google、Facebook 等)通信,请参阅此页面。

          1. 执行器端点

CAS 提供以下端点:

  DELETE

/cas/actuator/oauthTokens/{token} 

按 ID 删除 Token。

  GET

/cas/actuator/oauthTokens/{token} 

  GET

/cas/actuator/oauthTokens 

          1. 配置

通过在 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-oauth-webflow"}

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

必填

自选

签名和加密

笔记

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

Show  entries

搜索:

·  cas.authn.oauth.access-token.crypto.encryption.key=

加密密钥是一个 JWT,其长度由加密密钥大小设置定义。

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

 org.apereo.cas.configuration.model.core.util.EncryptionJwtCryptoProperties.

如何配置此属性?

·  cas.authn.oauth.access-token.crypto.signing.key=

签名密钥是一个 JWT,其长度由签名密钥大小设置定义。

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

 org.apereo.cas.configuration.model.core.util.SigningJwtCryptoProperties.

如何配置此属性?

·  cas.authn.oauth.crypto.encryption.key=

加密密钥是一个 JWT,其长度由加密密钥大小设置定义。

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

 org.apereo.cas.configuration.model.core.util.EncryptionJwtCryptoProperties.

如何配置此属性?

·  cas.authn.oauth.crypto.signing.key=

签名密钥是一个 JWT,其长度由签名密钥大小设置定义。

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

 org.apereo.cas.configuration.model.core.util.SigningJwtCryptoProperties.

如何配置此属性?

·  cas.authn.oauth.session-replication.cookie.crypto.encryption.key=

加密密钥是一个 JWT,其长度由加密密钥大小设置定义。

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

 org.apereo.cas.configuration.model.core.util.EncryptionJwtCryptoProperties.

如何配置此属性?

显示 1 到 5 的 6 个条目

上一页12下一页

          1. 端点

启用 OAuth 支持后,以下端点将可用:

端点

描述

方法

/oauth2.0/authorize

授权用户并启动 CAS 身份验证流程。

GET

/oauth2.0/accessToken、/oauth2.0/token

获取纯文本或 JSON 格式的访问令牌

POST

/oauth2.0/profile

通过 JSON 参数获取经过身份验证access_token用户配置文件。

GET

/oauth2.0/introspect

查询 CAS 以通过内省检测给定访问令牌的状态

POST

/oauth2.0/device

通过设备流协议批准设备用户代码。

POST

/oauth2.0/revoke

撤销访问令牌或刷新令牌。此终端节点需要使用 OAuth2 服务client_id进行 HTTP 基本身份验证,并将 client_secret 关联为用户名和密码。

POST

          1. 协议流

支持以下协议流、响应和授权类型。

资源

授权码 / PKCE

请参阅此页面

客户端凭证

请参阅此页面

设备授权

请参阅此页面

代币兑换

请参阅此页面

Token / Implicit

请参阅此页面

刷新令牌

请参阅此页面

资源所有者

请参阅此页面

          1. 节流

可以为 /oauth2.0/accessToken 启用身份验证限制,因为覆盖中包含支持以打开身份验证限制支持。然后,为支持限制的 OAuth 端点激活处理用于身份验证和票证验证等的常用 CAS 服务器端点的限制机制。

          1. 示例客户端应用程序

OAuth2 示例 Webapp

          1. 故障排除

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

1

2

3

4

5

6

7

8

9

10

...<Logger name="org.apereo.cas.oauth" level="debug" additivity="false">

    <AppenderRef ref="casConsole"/>

    <AppenderRef ref="casFile"/></Logger><Logger name="PROTOCOL_MESSAGE" level="debug" additivity="false">

    <AppenderRef ref="casConsole"/>

    <AppenderRef ref="casFile"/></Logger>

...

          1. 授权码
            1. OAuth 协议流 - 授权码

授权代码类型用于 UI 交互:用户将输入凭证,将收到一个代码,并将该代码交换为访问令牌。

端点

参数

响应

/oauth2.0/authorize

response_type=code&client_id=<ID>&redirect_uri=<CALLBACK>

OAuth 代码作为 CALLBACK URL 的参数。

/oauth2.0/accessToken

grant_type=authorization_code&client_id=ID
&client_secret=SECRET&code=CODE&redirect_uri=CALLBACK

访问令牌。

            1. 证明密钥代码交换 (PKCE)

代码交换的证明密钥(PKCE,发音为 pixie)扩展描述了一种供公共客户端减轻授权码被拦截的威胁的技术。该技术涉及客户端首先创建一个密钥,然后在将授权码交换为访问令牌时再次使用该密钥。这样,如果代码被拦截,它将没有用,因为 Token 请求依赖于初始密钥。

参数

描述

code_challenge

使用以下方法生成的代码质询。

code_challenge_method

plain,S256。此参数是可选的,其中默认为 plain。

授权端点 /oauth2.0/authorize 上的授权代码类型能够接受以下参数来激活 PKCE:

/oauth2.0/accessToken 端点能够接受以下参数来激活 PKCE:

参数

描述

code_verifier

应用程序最初在授权请求之前生成的 PKCE 请求的原始代码验证程序。

如果方法是 plain,则 CAS 只需检查提供的 code_verifier 是否与预期的 code_challenge 字符串匹配。如果方法是 S256,则 CAS 应采用提供的code_verifier并使用客户端最初使用的相同方法对其进行转换。这意味着计算验证器的 SHA256 哈希值并对其进行 base64 url 编码,然后将其与存储的 code_challenge 进行比较。

如果验证程序与预期值匹配,则 CAS 可以照常继续,颁发访问令牌并做出适当的响应。

          1. 客户端凭证
            1. OAuth 协议流 - 客户端凭证

此授权适用于不需要特定用户访问数据的权限的计算机到计算机身份验证。客户端使用它来在用户上下文之外获取访问令牌,以访问有关自己的资源,而不是访问用户的资源。

端点

参数

响应

/oauth2.0/accessToken

grant_type=client_credentials&client_id=client&client_secret=secret

访问令牌。

由于此授权类型没有指定redirect_uri,因此 CAS 识别并在服务注册表中匹配的服务标识符将作为client_id。您还可以选择传递标识目标应用程序 URL service或 X-service 标头值。标头值必须与链接到客户端 ID 的注册表中的 OAuth 服务定义匹配。

          1. 设备授权
            1. OAuth 协议流 - 设备授权

OAuth 2.0 设备授权授予(以前称为设备流)是一个 OAuth 2.0 扩展,它使没有浏览器或输入功能受限的设备能够获取访问令牌。这常见于 Apple TV 应用程序或可以将视频流式传输到 YouTube 频道的硬件编码器等设备上。

端点

参数

响应

/oauth2.0/accessToken

response_type=device_code&client_id=<ID>

设备授权 URL、设备代码和用户代码。

/oauth2.0/accessToken

response_type=device_code&client_id=<ID>&code=<DEVICE_CODE>

用户代码获得批准后的新访问令牌。

          1. 代币兑换
            1. OAuth 协议流程 - 令牌交换

令牌交换协议是 OAuth 2.0 的扩展,它允许将一个 OAuth 2.0 令牌交换为另一种类型的令牌。这种交换通常发生在系统中的不同实体之间,例如客户端将一个访问令牌交换为另一个具有不同范围的访问令牌,等等。

端点

参数

响应

/oauth2.0/accessToken

grant_type=...&resource=https://...&subject_token=...&subject_token_type=...&requested_token_type=...

新交换的 Token 及其类型。

            1. 应用程序配置

请求的授权类型必须为 urn:ietf:params:oauth:grant-type:token-exchange。还必须为相关的注册服务定义指定此授权类型。

模仿

 Delegation

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

{

  "@class" : "org.apereo.cas.support.oauth.services.OAuthRegisteredService",

  "clientId": "clientid",

  "clientSecret": "clientSecret",

  "serviceId" : "^(https|imaps)://<redirect-uri>.*",

  "name" : "OAuthService",

  "id" : 100,

  "supportedGrantTypes": [ "java.util.HashSet", [ "urn:ietf:params:oauth:grant-type:token-exchange" ] ],

  "tokenExchangePolicy": {

    "@class": "org.apereo.cas.support.oauth.services.DefaultRegisteredServiceOAuthTokenExchangePolicy",

    "allowedResources": [ "java.util.HashSet", [ "..." ] ],

    "allowedAudience": [ "java.util.HashSet", [ "..." ] ],

    "allowedTokenTypes": [ "java.util.HashSet", [

      "urn:ietf:params:oauth:token-type:access_token",

      "urn:ietf:params:oauth:token-type:jwt"

    ] ]

  }}

此外,如上面的示例所示,可以定义一个专用的令牌交换策略,该策略将控制令牌交换操作允许的资源、受众和令牌类型。为 token 交换策略定义的所有字段都可以接受正则表达式模式。

            1. 支持的交易所

模拟操作支持以下令牌类型组合:

主题令牌类型

颁发的令牌类型

描述

urn:ietf:params:oauth:token-type:access_token

urn:ietf:params:oauth:token-type:access_token

将访问令牌交换为另一个访问令牌。

urn:ietf:params:oauth:token-type:access_token

urn:ietf:params:oauth:token-type:jwt

将访问令牌交换为另一个 JWT 令牌。

urn:ietf:params:oauth:token-type:access_token

urn:ietf:params:oauth:token-type:id_token

将访问令牌交换为 OpenID Connect ID 令牌

委派操作支持以下令牌类型组合:

主题令牌类型

颁发的令牌类型

描述

urn:ietf:params:oauth:token-type:access_token

urn:ietf:params:oauth:token-type:access_token

将访问令牌交换为另一个访问令牌。

urn:ietf:params:oauth:token-type:access_token

urn:ietf:params:oauth:token-type:jwt

将访问令牌交换为另一个 JWT 令牌。

            1. 委派与模拟

当主体 A 模拟主体 B 时,将向 A 授予 B 在某个定义的权限上下文中具有的所有权限,并且在该上下文中与 B 没有区别。因此,当委托人 A 模拟委托人 B 时,就任何接收此类令牌的实体而言,它们实际上是在与 B 打交道。确实,标识系统的某些成员可能知道正在进行模拟,但这不是必需的。对于所有意图和目的,当 A 模拟 B 时,A 是令牌授权的权限上下文中的 B。

使用委托语义,委托人 A 仍然有自己的身份,独立于 B,并且明确理解虽然 B 可能已将其部分权限委托给 A,但所采取的任何操作都是由代表 B 的 A 执行的。从某种意义上说,A 是 B 的代理。

          1. 含蓄
            1. OAuth 协议流 - 令牌/隐式

用于隐式流的token类型用于 UI 交互以及间接非交互式(即 Javascript)应用程序。

端点

参数

响应

/oauth2.0/authorize

response_type=token&client_id=ID&redirect_uri=CALLBACK

作为 CALLBACK URL 的锚点参数的访问令牌。

隐式流使用 OIDC 实现 Web 登录,这与 SAML 和 WS 联合身份验证的运行方式非常相似。客户端 Web 应用程序通过前端通道请求和获取访问令牌,无需密钥或额外的后端调用。

传统上,隐式流由无法安全存储密钥的应用程序使用。使用此流程不再被视为请求访问令牌的最佳实践;新实施应使用 PKCE 的授权代码流。

          1. 刷新令牌
            1. OAuth 协议流 - 刷新令牌

当先前的访问令牌过期时,刷新令牌授权类型从刷新令牌(为先前的访问令牌发出)中检索新的访问令牌。

端点

参数

响应

/oauth2.0/accessToken

grant_type=refresh_token&client_id=<ID>
&client_secret=SECRET&refresh_token=REFRESH_TOKEN

新的访问令牌。

          1. 资源所有者
            1. OAuth 协议流 - 资源所有者凭证

password授权类型允许 OAuth 客户端直接将用户的凭证发送到 OAuth 服务器。此授权为 Web 和本机设备应用程序中的可信第一方客户端提供了出色的用户体验。

端点

参数

响应

/oauth2.0/accessToken

grant_type=password&client_id=ID
&client_secret=<SECRET>
&username=USERNAME&password=PASSWORD

访问令牌。

由于此授权类型没有指定redirect_uri,因此 CAS 识别并在服务注册表中匹配的服务标识符将作为client_id。您还可以选择传递标识目标应用程序 URL service或 X-service 标头值。标头值必须与链接到客户端 ID 的注册表中的 OAuth 服务定义匹配。

        1. 客户
          1. 客户端注册 - OAuth 身份验证

每个 OAuth 依赖方都必须定义为 CAS 服务:

1

2

3

4

5

6

7

8

9

10

11

12

{

  "@class" : "org.apereo.cas.support.oauth.services.OAuthRegisteredService",

  "clientId": "clientid",

  "clientSecret": "clientSecret",

  "serviceId" : "^(https|imaps)://<redirect-uri>.*",

  "name" : "OAuthService",

  "id" : 100,

  "supportedGrantTypes": [ "java.util.HashSet", [ "...", "..." ] ],

  "supportedResponseTypes": [ "java.util.HashSet", [ "...", "..." ] ],

  "scopes": [ "java.util.HashSet", [ "MyCustomScope" ] ],

  "audience": [ "java.util.HashSet", [ "MyAudience" ] ],}

支持以下字段:

描述

serviceId

授权重定向 URI 的模式,或者与 clientId 相同redirect_uri以防授权类型(即 client_credentials 等)不需要重定向 URI。请注意,最终与 pattern 匹配的 redirect_uri 参数不得包含 URL 片段、无效方案(如 javascript 或data)或可疑参数(如code、state等)。

clientId

应用程序/服务的客户端标识符。

clientSecret

应用程序/服务的客户端密钥。从服务接收的客户端密钥将进行 URL 解码,然后再与 CAS 服务定义中的密钥进行比较。

userProfileViewType

用户配置文件的格式选项;默认值为 undefined。选项包括 NESTED、FLAT

scopes

此服务的授权范围的集合,用作授权请求中请求的范围的筛选器。

supportedGrantTypes

此服务支持的授权类型的集合。

supportedResponseTypes

此服务支持的响应类型的集合。

bypassApprovalPrompt

是否应绕过审批提示/同意屏幕。默认值为 false。

generateRefreshToken

是否应将刷新令牌与访问令牌一起生成。默认值为 false。

renewRefreshToken

是否应将现有刷新令牌过期,并在请求新的访问令牌时生成(并发送)新的刷新令牌(grant_type = refresh_token)。仅当 generateRefreshToken 设置为 true 时才可能。默认值为 false。

jwtAccessToken

是否应将访问令牌创建为 JWT。默认值为 false。

jwtRefreshToken

是否应将刷新令牌创建为 JWT。默认值为 false。

jwtAccessTokenSigningAlg

用于 JWT 访问令牌的 JWT 签名算法。默认为签名密钥的算法。

introspectionSignedResponseAlg

自选。用于对 JWT 内省响应进行签名的算法标头值。默认值为 RS512。

introspectionEncryptedResponseAlg

自选。用于内容密钥加密的算法标头值,与内省 JWT 响应相关。

introspectionEncryptedResponseEncoding

自选。用于与内省 JWT 响应相关的内容加密的算法方法标头值。

responseMode

允许 CAS 更改用于将响应返回给客户端的机制。请看这个

audience

自选。可以控制 JWT 访问令牌或 ID 令牌中的 aud 字段的值集。如果未定义,则通常会改用客户端 ID。

 保留您需要的!

建议您仅保留和维护特定集成所需的属性和设置。没有必要获取所有服务字段的副本,并尝试根据其默认值再次配置它们。虽然您可能希望保留一份副本作为参考,但这种策略最终会导致糟糕的升级,增加中断更改的机会,并导致部署混乱。

服务定义通常由服务管理工具管理。

          1. 可加密的客户端密钥

OAuth 依赖方的客户端密钥可以定义为前缀为 {cas-cipher} 的加密值:

1

2

3

4

5

6

7

8

{

  "@class": "org.apereo.cas.support.oauth.services.OAuthRegisteredService",

  "clientId": "clientid",

  "clientSecret": "{cas-cipher}eyJhbGciOiJIUzUxMiIs...",

  "serviceId" : "^(https|imaps)://<redirect-uri>.*",

  "name": "Sample",

  "id": 100}

可以使用 CAS 提供的密码操作手动或通过 CAS 命令行 shell 对客户端密钥进行加密。

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

必填

自选

签名和加密

Hibernate 和 JDBC

笔记

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

Show  entries

搜索:

·  cas.authn.oauth.access-token.crypto.encryption.key=

加密密钥是一个 JWT,其长度由加密密钥大小设置定义。

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

 org.apereo.cas.configuration.model.core.util.EncryptionJwtCryptoProperties.

如何配置此属性?

·  cas.authn.oauth.access-token.crypto.signing.key=

签名密钥是一个 JWT,其长度由签名密钥大小设置定义。

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

 org.apereo.cas.configuration.model.core.util.SigningJwtCryptoProperties.

如何配置此属性?

·  cas.authn.oauth.crypto.encryption.key=

加密密钥是一个 JWT,其长度由加密密钥大小设置定义。

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

 org.apereo.cas.configuration.model.core.util.EncryptionJwtCryptoProperties.

如何配置此属性?

·  cas.authn.oauth.crypto.signing.key=

签名密钥是一个 JWT,其长度由签名密钥大小设置定义。

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

 org.apereo.cas.configuration.model.core.util.SigningJwtCryptoProperties.

如何配置此属性?

·  cas.authn.oauth.session-replication.cookie.crypto.encryption.key=

加密密钥是一个 JWT,其长度由加密密钥大小设置定义。

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

 org.apereo.cas.configuration.model.core.util.EncryptionJwtCryptoProperties.

如何配置此属性?

显示 1 到 5 的 12 个条目

上一页123下一页

          1. 属性发布

属性/声明筛选和发布策略是按 OAuth 服务定义的。有关更多信息,请参阅本指南。

        1. 响应/授权类型
          1. 响应和授权类型 - OAuth身份验证

每个 OAuth 依赖方都必须定义为 CAS 服务:

1

2

3

4

5

6

7

8

9

10

{

  "@class" : "org.apereo.cas.support.oauth.services.OAuthRegisteredService",

  "clientId": "clientid",

  "clientSecret": "clientSecret",

  "serviceId" : "^(https|imaps)://<redirect-uri>.*",

  "name" : "OAuthService",

  "id" : 100,

  "supportedGrantTypes": [ "java.util.HashSet", [ "...", "..." ] ],

  "supportedResponseTypes": [ "java.util.HashSet", [ "...", "..." ] ]}

 使用警告!

出于向后兼容性的原因,CAS 目前并未严格执行授权支持的响应/授权类型的集合。这意味着,如果未定义,则服务定义和相关策略可能允许所有授权和响应类型。请注意,此行为在未来版本中可能会发生更改,因此,强烈建议立即在服务定义中声明每个配置文件的所有授权授权/响应类型,以避免将来出现意外。

          1. 支持的授权类型

CAS 支持以下授权类型:

授权类型

urn:ietf:params:oauth:grant-type:device_code

authorization_code

password

client_credentials

refresh_token

urn:ietf:params:oauth:grant-type:uma-ticket

urn:ietf:params:oauth:grant-type:token-exchange

          1. 支持的响应类型

CAS 支持以下响应类型:

授权类型

code

token

device_code

id_token token

id_token

        1. 响应模式
          1. 响应模式 - OAuth 身份验证

每个 OAuth 依赖方都可以定义自己所需的响应模式:

1

2

3

4

5

6

7

8

9

10

11

{

  "@class" : "org.apereo.cas.support.oauth.services.OAuthRegisteredService",

  "clientId": "clientid",

  "clientSecret": "clientSecret",

  "serviceId" : "^(https|imaps)://<redirect-uri>.*",

  "name" : "OAuthService",

  "id" : 100,

  "supportedGrantTypes": [ "java.util.HashSet", [ "...", "..." ] ],

  "supportedResponseTypes": [ "java.util.HashSet", [ "...", "..." ] ]

  "responseMode": "..."}

响应模式变体允许 CAS 更改用于将响应返回给客户端的机制。

查询

片段

表单帖子

query授权响应参数作为查询参数包含在重定向 URI 的查询组件中。

1

https://example.com/cb?code=SplxlOBeZQQYbYS6WxSbIA&state=xyz

在上面的示例中,code 和 state 是 URI 的查询组件中包含的授权响应参数。

此响应模式通常用于前端通道通信,其中授权响应通过用户的浏览器发送回客户端。

        1. CSRF
          1. OAuth 身份验证 - CSRF Cookie

拦截 OAuth 身份验证请求和 URL 以生成 CSRF 令牌。这允许 CAS 生成 CSRF 令牌并将其保存为 pac4jCsrfToken 请求属性和 pac4jCsrfToken Cookie。

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

自选

笔记

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

Show  entries

搜索:

·  cas.authn.oauth.csrf-cookie.domain=

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

 org.apereo.cas.configuration.model.support.oauth.OAuthCsrfCookieProperties.

如何配置此属性?

·  cas.authn.oauth.csrf-cookie.http-only=true

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

 org.apereo.cas.configuration.model.support.oauth.OAuthCsrfCookieProperties.

如何配置此属性?

·  cas.authn.oauth.csrf-cookie.max-age=-1

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

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

 org.apereo.cas.configuration.model.support.oauth.OAuthCsrfCookieProperties.

如何配置此属性?

·  cas.authn.oauth.csrf-cookie.name=

Cookie 名称。构造具有指定名称和值的 Cookie。该名称必须符合 RFC 2965。这意味着它只能包含 ASCII 字母数字字符,不能包含逗号、分号或空格,也不能以 $ 字符开头。Cookie 的名称在创建后无法更改。默认情况下,Cookie 是根据 RFC 2965 Cookie 规范创建的。Cookie 名称由 CAS 在运行时自动计算,分配,通常无需自定义名称或为其分配不同的值,除非有特殊用例需要更改。

 org.apereo.cas.configuration.model.support.oauth.OAuthCsrfCookieProperties.

如何配置此属性?

·  cas.authn.oauth.csrf-cookie.path=

Cookie 路径。指定客户端应将 Cookie 返回到的 Cookie 的路径。该 Cookie 对您指定的目录中的所有页面以及该目录的子目录中的所有页面都可见。Cookie 的路径必须包含设置 Cookie 的 Servlet,例如 /catalog,它使 Cookie 对 /catalog 下服务器上的所有目录可见。有关为 cookie 设置路径名的更多信息,请参阅 RFC 2965(可在 Internet 上找到)。

 org.apereo.cas.configuration.model.support.oauth.OAuthCsrfCookieProperties.

如何配置此属性?

显示 1 到 5 的 7 个条目

上一页12下一页

        1. JWT 访问令牌
          1. OAuth 身份验证 - JWT 访问令牌

默认情况下,OAuth 访问令牌创建为不透明标识符。还可以选择基于每个服务生成 JWT 作为访问令牌:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

{

    "@class" : "org.apereo.cas.support.oauth.services.OAuthRegisteredService",

    "clientId": "clientid",

    "clientSecret": "clientSecret",

    "serviceId" : "^(https|imaps)://<redirect-uri>.*",

    "name" : "OAuthService",

    "id" : 100,

    "jwtAccessToken": true,

    "properties" : {

      "@class" : "java.util.HashMap",

      "accessTokenAsJwtSigningKey" : {

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

         "values" : [ "java.util.HashSet", [ "..." ] ]

      },

      "accessTokenAsJwtEncryptionKey" : {

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

           "values" : [ "java.util.HashSet", [ "..." ] ]

      },

      "accessTokenAsJwtSigningEnabled" : {

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

         "values" : [ "java.util.HashSet", [ "true" ] ]

      },

      "accessTokenAsJwtEncryptionEnabled" : {

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

         "values" : [ "java.util.HashSet", [ "true" ] ]

      },

      "accessTokenAsJwtCipherStrategyType" : {

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

         "values" : [ "java.util.HashSet", [ "ENCRYPT_AND_SIGN" ] ]

      }

    }}

签名和加密密钥也可以基于每个服务定义,或通过 CAS 设置全局定义。

CAS 为各种模块和功能提供并识别以下属性:

Show  entries

搜索:

名字

默认值

类型

accessTokenAsJwtCipherStrategyType

ENCRYPT_AND_SIGN

STRING

JWT_ACCESS_TOKENS

accessTokenAsJwtEncryptionAlg

STRING

JWT_ACCESS_TOKENS

accessTokenAsJwtEncryptionEnabled

false

BOOLEAN

JWT_ACCESS_TOKENS

accessTokenAsJwtEncryptionKey

STRING

JWT_ACCESS_TOKENS

accessTokenAsJwtSigningEnabled

true

BOOLEAN

JWT_ACCESS_TOKENS

显示 1 到 5 的 8 个条目

上一页12下一页

        1. 令牌自省
          1. 令牌自检 - OAuth 身份验证

CAS 颁发的访问令牌或刷新令牌的内容通常对客户端不透明(尽管访问令牌也可能作为 JWT 有条件地颁发)。这意味着客户端不需要了解令牌本身的内容或结构(如果有的话)。但是,仍有大量元数据可能附加到 atoken,例如其当前有效性、批准的范围以及有关颁发 Token 的上下文的信息。此规范定义了一个协议,该协议允许授权的受保护资源查询授权服务器,以确定 OAuth 2.0 客户端提供给它们的给定令牌的元数据集。此元数据包括令牌当前是否处于活动状态(或者是否已过期或已被撤销)、令牌具有的访问权限以及授予令牌的授权上下文(包括令牌的授权者以及令牌颁发给哪个客户端)。令牌自省允许受保护的资源查询此信息,无论它是否包含在令牌本身中,从而允许此方法与结构化令牌值一起使用或独立于结构化令牌值使用。

自省终端节点需要使用 OAuth2 服务client_id 和 client_secret 进行 HTTP 基本身份验证。以下是对令牌自省请求的响应示例:

1

2

3

4

5

6

7

8

9

10

11

{

    "active": true,

    "client_id": "l2345678",

    "username": "jdoe",

    "scope": "read write manage",

    "sub": "Z5O3upPC88QrAjx00dis",

    "aud": "https://protected.example.net/resource",

    "iss": "https://cas.example.com/oidc",

    "exp": 1419356238,

    "iat": 1419350238}

          1. 令牌自检的 JWT 响应

自省响应是一个普通的 JSON 对象。但是,在某些使用案例中,资源服务器需要更有力的保证,即 CAS 服务器为访问令牌发出了令牌自检响应,包括 CAS 服务器对令牌自检响应的内容承担责任的情况。在此类用例中,返回已签名的 JWT 作为内省响应可能很有用,甚至是必需的。此规范扩展了令牌自省终端节点,使其能够以 JWT 形式返回响应。

令牌自省请求可以通过发送 Accept HTTP 标头字段设置为 application/token-introspection+jwt 的内省请求来请求 JWT 自省响应。自省终端节点使用 JWT 进行响应,将 Content-Type HTTP 标头字段设置为 application/token-introspection+jwt,并将 JWT typ(“type”)标头参数设置为 token-introspection+jwt。

示例响应 JWT 负载包含以下 JSON 文档:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

{

    "iss":"https://cas.example.com/oidc",

    "aud":"https://rs.example.com/resource",

    "iat":1514797892,

    "token_introspection":

    {

        "active":true,

        "iss":"https://as.example.com/",

        "aud":"https://rs.example.com/resource",

        "iat":1514797822,

        "exp":1514797942,

        "client_id":"paiB2goo0a",

        "scope":"read write dolphin",

        "sub":"Z5O3upPC88QrAjx00dis",

        "birthdate":"1982-02-01",

        "given_name":"John",

        "family_name":"Doe",

        "jti":"t1FoCCaZd4Xv4ORJUWVUeTZfsKhW30CQCrWDDjwXy6w"

    }}

可以按客户端定义用于处理 JWT 响应以进行令牌自检的签名和加密算法。

        1. 用户档案
          1. 用户配置文件 - OAuth 身份验证

应用程序可以使用以下选项呈现和使用请求的用户配置文件。

嵌 套

自定义

默认情况下,请求的用户配置文件使用 NESTED 格式呈现,其中经过身份验证的主体和属性分别放置在最终结构中的 id 和 attributes 标记中。

1

2

3

4

5

6

7

8

{

  "id": "casuser",

  "attributes": {

    "email": "casuser@example.org",

    "name": "CAS"

  },

  "something": "else"}

          1. 每个应用程序

用户配置文件渲染器也可以基于每个应用程序进行控制:

1

2

3

4

5

6

7

8

9

{

  "@class" : "org.apereo.cas.support.oauth.services.OAuthRegisteredService",

  "clientId": "clientid",

  "clientSecret": "clientSecret",

  "serviceId" : "^(https|imaps)://<redirect-uri>.*",

  "name" : "OAuthService",

  "id" : 100,

  "userProfileViewType": "FLAT"}

        1. 过期策略
          1. 令牌过期策略 - OAuth 身份验证

OAuth 令牌的过期策略由 CAS 设置和属性控制。请注意,虽然访问令牌和刷新令牌可能有自己的生命周期和过期策略,但它们通常受到 CAS 单点登录会话长度的上限。

          1. OAuth 代码

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

自选

笔记

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

Show  entries

搜索:

·  cas.authn.oauth.code.number-of-uses=1

此代码有效且可使用的次数。

 org.apereo.cas.configuration.model.support.oauth.OAuthCodeProperties.

如何配置此属性?

·  cas.authn.oauth.code.remove-related-access-tokens=false

尝试使用已过期或不再存在的代码时,请删除相关的访问令牌。

 org.apereo.cas.configuration.model.support.oauth.OAuthCodeProperties.

如何配置此属性?

·  cas.authn.oauth.code.storage-name=oauthCodesCache

CAS 使用和创建的存储对象名称,用于在后备票证注册表实现中保存 OAuth 代码。

 org.apereo.cas.configuration.model.support.oauth.OAuthCodeProperties.

如何配置此属性?

·  cas.authn.oauth.code.time-to-kill-in-seconds=30

代码有效的持续时间(以秒为单位)。

 org.apereo.cas.configuration.model.support.oauth.OAuthCodeProperties.

如何配置此属性?

显示 1 到 4 的 4 个条目

上一页1下一页

          1. OAuth 访问令牌

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

必填

自选

签名和加密

笔记

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

Show  entries

搜索:

·  cas.authn.oauth.access-token.crypto.encryption.key=

加密密钥是一个 JWT,其长度由加密密钥大小设置定义。

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

 org.apereo.cas.configuration.model.core.util.EncryptionJwtCryptoProperties.

如何配置此属性?

·  cas.authn.oauth.access-token.crypto.signing.key=

签名密钥是一个 JWT,其长度由签名密钥大小设置定义。

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

 org.apereo.cas.configuration.model.core.util.SigningJwtCryptoProperties.

如何配置此属性?

显示 1 到 2 的 2 个条目

上一页1下一页

          1. OAuth 设备令牌

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

自选

笔记

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

Show  entries

搜索:

·  cas.authn.oauth.device-token.max-time-to-live-in-seconds=PT5M

硬超时以终止设备令牌并使其过期。

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

 org.apereo.cas.configuration.model.support.oauth.OAuthDeviceTokenProperties.

如何配置此属性?

·  cas.authn.oauth.device-token.refresh-interval=PT15S

设备刷新间隔。客户端应尝试通过对服务器上的访问令牌终端节点执行 POST 操作,每隔几秒钟(以间隔指定的速率)获取一次访问令牌。

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

 org.apereo.cas.configuration.model.support.oauth.OAuthDeviceTokenProperties.

如何配置此属性?

·  cas.authn.oauth.device-token.storage-name=oauthDeviceTokensCache

CAS 使用和创建的存储对象名称,用于在后备票证注册表实现中保存 OAuth 设备令牌。

 org.apereo.cas.configuration.model.support.oauth.OAuthDeviceTokenProperties.

如何配置此属性?

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

上一页1下一页

          1. OAuth 刷新令牌

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

自选

笔记

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

Show  entries

搜索:

·  cas.authn.oauth.refresh-token.create-as-jwt=false

创建访问令牌作为 JWT。

 org.apereo.cas.configuration.model.support.oauth.OAuthRefreshTokenProperties.

如何配置此属性?

·  cas.authn.oauth.refresh-token.max-active-tokens-allowed=0

应用程序可以接收的最大活动刷新令牌数。如果应用程序请求的值超过此限制,则请求将被拒绝,并且不会颁发访问令牌。

 org.apereo.cas.configuration.model.support.oauth.OAuthRefreshTokenProperties.

如何配置此属性?

·  cas.authn.oauth.refresh-token.storage-name=oauthRefreshTokensCache

CAS 使用和创建的存储对象名称,用于在后备票证注册表实现中保存 OAuth 刷新令牌。

 org.apereo.cas.configuration.model.support.oauth.OAuthRefreshTokenProperties.

如何配置此属性?

·  cas.authn.oauth.refresh-token.time-to-kill-in-seconds=P14D

硬超时,超过此超时后,刷新令牌将被视为已过期。

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

 org.apereo.cas.configuration.model.support.oauth.OAuthRefreshTokenProperties.

如何配置此属性?

显示 1 到 4 的 4 个条目

上一页1下一页

          1. OAuth 设备用户代码

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

自选

笔记

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

Show  entries

搜索:

·  cas.authn.oauth.device-user-code.max-time-to-live-in-seconds=PT1M

硬超时以终止令牌并使其过期。

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

 org.apereo.cas.configuration.model.support.oauth.OAuthDeviceUserCodeProperties.

如何配置此属性?

·  cas.authn.oauth.device-user-code.storage-name=oauthDeviceUserCodesCache

CAS 使用和创建的存储对象名称,用于在后备票证注册表实现中保存 OAuth 设备用户代码。

 org.apereo.cas.configuration.model.support.oauth.OAuthDeviceUserCodeProperties.

如何配置此属性?

·  cas.authn.oauth.device-user-code.user-code-length=8

生成的用户代码的长度。

 org.apereo.cas.configuration.model.support.oauth.OAuthDeviceUserCodeProperties.

如何配置此属性?

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

上一页1下一页

          1. 每项服务

某些 OAuth 令牌的过期策略可以基于每个应用程序有条件地决定。令牌过期策略要偏离默认配置的候选服务必须按照以下代码段所示进行设计。

OAUTH 代码

OAUTH 访问令牌

OAUTH 设备令牌

OAUTH 刷新令牌

代码的过期策略可以基于每个应用程序定义:

1

2

3

4

5

6

7

8

9

10

11

12

13

{

  "@class" : "org.apereo.cas.support.oauth.services.OAuthRegisteredService",

  "clientId": "clientid",

  "clientSecret": "clientSecret",

  "serviceId" : "^(https|imaps)://<redirect-uri>.*",

  "name" : "OAuthService",

  "id" : 100,

  "codeExpirationPolicy": {

    "@class": "org.apereo.cas.support.oauth.services.DefaultRegisteredServiceOAuthCodeExpirationPolicy",

    "numberOfUses": 1,

    "timeToLive": "PT10S"

  }}

        1. 用户管理的访问权限
          1. 用户管理访问协议

用户管理访问 (UMA) 是一种轻量级访问控制协议,它定义了一个集中式工作流程,以允许实体(用户或公司)管理对其资源的访问。

 范围

请记住,通常可能带有特殊范围(如 uma_protection 或 uma_authorization)的 UMA 相关操作不仅必须在初始授权请求中请求,而且还应在注册的服务定义中显式授权。

要了解有关 UMA 的更多信息,请阅读规范。

          1. 配置

通过在 WAR 覆盖中包含以下依赖项来启用支持:

Apache Maven

Gradle

BOM - Spring

BOM - Gradle

资源

1

implementation "org.apereo.cas:cas-server-support-oauth-uma:${project.'cas.version'}"

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

必填

笔记

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

Show  entries

搜索:

·  cas.authn.oauth.uma.core.issuer=http://localhost:8080/cas

颁发者。

 org.apereo.cas.configuration.model.support.uma.UmaCoreProperties.

如何配置此属性?

显示 1 到 1 的 1 个条目

上一页1下一页

          1. 权限票证

权限表示资源标识符及其相应的范围。在单个实例中,资源服务器只能请求访问属于单个资源所有者的资源的权限,该资源由单个授权服务器保护。作为响应,资源服务器会收到一个权限票证,该票证表示资源服务器请求的权限相同。

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

自选

笔记

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

Show  entries

搜索:

·  cas.authn.oauth.uma.permission-ticket.max-time-to-live-in-seconds=PT3M

硬超时以终止 UMA 权限令牌并使其过期。

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

 org.apereo.cas.configuration.model.support.uma.UmaPermissionTicketProperties.

如何配置此属性?

显示 1 到 1 的 1 个条目

上一页1下一页

          1. 请求 Party Token

然后,客户端可以通过提供收到的权限票证和任何其他必需的声明,从授权服务器获取请求方令牌 (RPT)。RPT 将在成功评估保单条件、范围、声明和任何其他相关信息后发布。

RPT 是与 UMA 授权关联的 OAuth 访问令牌。RPT 对于请求方、客户端、授权服务器、资源服务器和资源所有者是唯一的。此令牌表示一定数量的已授予权限。

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

必填

自选

笔记

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

Show  entries

搜索:

·  cas.authn.oauth.uma.requesting-party-token.jwks-file.location=

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

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

如何配置此属性?

显示 1 到 1 的 1 个条目

上一页1下一页

          1. 资源存储

默认情况下,资源定义保存在内存存储库中。

CAS 还提供了由 relational databaseof choice 支持的替代实现,用于跟踪和管理此类定义。存储库选项在 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-oauth-uma-jpa"}

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

必填

自选

Hibernate 和 JDBC

笔记

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

Show  entries

搜索:

·  cas.authn.oauth.uma.resource-set.jpa.driver-class=org.hsqldb.jdbcDriver

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

 org.apereo.cas.configuration.model.support.uma.UmaResourceSetJpaProperties.

如何配置此属性?

·  cas.authn.oauth.uma.resource-set.jpa.password=

数据库连接密码。

 org.apereo.cas.configuration.model.support.uma.UmaResourceSetJpaProperties.

如何配置此属性?

·  cas.authn.oauth.uma.resource-set.jpa.url=jdbc:hsqldb:mem:cas-hsql-database

数据库连接 URL。

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

 org.apereo.cas.configuration.model.support.uma.UmaResourceSetJpaProperties.

如何配置此属性?

·  cas.authn.oauth.uma.resource-set.jpa.user=sa

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

 org.apereo.cas.configuration.model.support.uma.UmaResourceSetJpaProperties.

如何配置此属性?

显示 1 到 4 的 4 个条目

上一页1下一页

          1. 端点
            1. 请求方令牌

向 /oauth2.0/umaJwks 发出 GET 请求以检索签名公钥。

            1. 政策

创造

向 /oauth2.0/${resourceId}/policy 发出 POST 请求,负载正文为:

1

2

3

4

5

6

7

8

9

{

  "permissions": [{

    "subject": "casuser",

    "scopes": ["read","write"],

    "claims": {

        "givenName": "CAS"

      }

    }]}

删除

以 /oauth2.0/${resourceId}/policy/${policyId} 的形式发出 DELETE 请求

更新

以 /oauth2.0/${resourceId}/policy/${policyId} 的形式发出 PUT 请求,并将负载正文作为与 POST 方法匹配的负载正文。

找到

以 /oauth2.0/${resourceId}/policy/ 的形式发出 GET 请求,以获取资源的所有策略定义。

以 /oauth2.0/${resourceId}/policy/${policyId} 的形式发出 GET 请求,以获取资源的特定策略定义。

            1. 资源

与资源相关的操作在端点 /oauth2.0/resourceSet 中处理。

创造

预期的 POST 有效负载正文为:

1

2

3

4

5

6

7

{

  "uri": "...",

  "type": "...",

  "name": "...",

  "icon_uri": "...",

  "resource_scopes": ["read","write"]}

删除

以 ${resourceSetEndpoint}/${resourceId} 的身份发出 DELETE 请求

更新

以 ${resourceSetEndpoint}/${resourceId} 的形式发出 PUT 请求,并将负载正文作为与 POST 方法匹配的负载正文。

找到

以 ${resourceSetEndpoint}/${resourceId} 的形式发出 GET 请求以获取特定资源定义。

以 ${resourceSetEndpoint} 身份发出 GET 请求以获取所有资源定义。

            1. 权限票证

1

2

3

4

5

{

    "claims": {"givenName":"CAS"},

    "resource_id": 100,

    "resource_scopes": ["read"]}

向 /oauth2.0/permission 发出 POST 请求,负载正文为:

            1. 索赔收集

使用以下查询参数向 /oauth2.0/rqpClaims 发出 GET 请求:

client_id

redirect_uri

ticket

state (可选)

            1. 发现

UMA 发现可通过 /oauth2.0/.well-known/uma-configuration 中的 GET 获得。

            1. 授权

向 /oauth2.0/rptAuthzRequest 发出 POST 请求,负载正文为:

1

2

3

4

5

6

7

{

    "ticket": "...",

    "rpt": "...",

    "grant_type":"urn:ietf:params:oauth:grant-type:uma-ticket",

    "claim_token": "...",

    "claim_token_format": "..."}

      1.  Delegation
        1. 委托身份验证

CAS 可以充当使用 Pac4j 库的客户端(即服务提供商或代理),并将身份验证委托给:

CAS 服务器

SAML2 身份提供商

OAuth2 提供商,如 Facebook、Twitter、GitHub、Google、LinkedIn 等

OpenID Connect 身份提供商,例如 Google、Apple

ADFS

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

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下一页

 注意

发出身份验证请求的客户端可以是任何类型(SAML、OAuth2、OpenID Connect 等),并且允许使用 CAS 服务器支持并配置为理解的任何协议提交身份验证请求。这意味着您可能有一个 OAuth2 客户端在委派模式下使用 CAS 在外部 SAML2 身份提供商、另一个 CAS 服务器或 Facebook 上进行身份验证,并在该流的末尾接收 OAuth2 用户配置文件。CAS 服务器能够充当代理,在中间执行协议转换。

        1. 身份提供商注册

请参阅本指南。

        1. 配置文件属性

在受 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. 供应

请参阅本指南。

        1. 后处理

请参阅本指南。

        1. 网络流

委托身份验证的 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. 故障排除

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

1

2

3

4

5

6

...<Logger name="org.pac4j" level="debug" additivity="false">

    <AppenderRef ref="casConsole"/>

    <AppenderRef ref="casFile"/></Logger>

...

    1. OpenID 连接
          1. OpenID Connect 协议

您可以通过以下方式配置 CAS 服务器:

OIDC 客户端支持,这意味着可以通过登录页面上的链接将身份验证委托给 OpenID Connect 提供商。

OIDC 服务器支持,这意味着您将能够通过 OpenID Connect 协议与 CAS 服务器通信,让 CAS 充当 OP。

OpenID Connect 身份验证

允许 CAS 充当 OpenId Connect 提供程序 (OP)。

 记得

OpenId Connect 是 OAuth 协议的延续,但有一些其他变体。如果启用 OpenId Connect,则也将自动启用 OAuth。为 OAuth 协议支持记录的选项和行为在这里可能同样适用。

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

要了解有关 OpenId Connect 的更多信息,请查看本指南。

当前实现支持:

授权代码流

隐式流

动态发现

WebFinger 颁发者发现

OIDC 客户和依赖方的管理和注册。

通过 Dynamic Client Registration 协议管理和注册 OIDC 客户端和依赖方。

能够解决、映射和发布索赔。

能够为各种令牌配置过期策略。

端点

描述

/oidc/.well-known

用于查询 CAS OIDC 配置信息和元数据的发现终端节点。

/oidc/.well-known/openid-configuration

与 .well-known discovery endpoint 相同。

/oidc/.well-known/webfinger

WebFinger 发现终端节点

/oidc/jwks

包含服务器的公钥,客户端可以使用这些公钥来验证 CAS 颁发的访问令牌和 ID 令牌的数字签名。接受可选的 state 查询参数,以按键的当前状态(即 current、previous、future)缩小键的范围。

/oidc/authorize

授权请求在此处处理。

/oidc/profile

用户配置文件请求在此处处理。

/oidc/logout

注销请求在此处处理。

/oidc/introspect

查询 CAS 以通过内省检测给定访问令牌的状态。此终端节点需要使用 OIDC 服务client_id进行 HTTP 基本身份验证,client_secret 关联为用户名和密码。

/oidc/accessToken、/oidc/token

生成授权访问令牌。

/oidc/revoke

撤销访问令牌或刷新令牌。此终端节点需要使用 OIDC 服务client_id进行 HTTP 基本身份验证,client_secret 关联为用户名和密码。

/oidc/register

通过动态客户端注册协议注册客户端。

/oidc/initToken

在 PROTECTED 模式下运行时,获取动态客户端注册所需的初始主访问令牌。

/oidc/clientConfig

更新或检索向服务器注册的客户端应用程序定义。

 使用发现

上述终端节点在 OpenID Connect 规范中未严格定义。CAS 软件可以随时选择更改 URL 端点。不要在应用程序配置中对这些终端节点进行硬编码。相反,请使用 Dynamic Discovery 终端节点并解析发现文档以发现终端节点。

配置

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

必填

自选

笔记

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

Show  entries

搜索:

·  cas.authn.oidc.core.issuer=http://localhost:8080/cas/oidc

CAS 主要支持每个部署/主机使用单个颁发者。

 org.apereo.cas.configuration.model.support.oidc.OidcCoreProperties.

如何配置此属性?

显示 1 到 1 的 1 个条目

上一页1下一页

示例客户端应用程序

MITREid 示例 Java Webapp

故障排除

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

1

2

3

4

5

6

7

8

9

10

...<Logger name="org.apereo.cas.oidc" level="debug" additivity="false">

    <AppenderRef ref="casConsole"/>

    <AppenderRef ref="casFile"/></Logger><Logger name="PROTOCOL_MESSAGE" level="debug" additivity="false">

    <AppenderRef ref="casConsole"/>

    <AppenderRef ref="casFile"/></Logger>

...

      1. 身份提供商
        1. 概述
          1. 客户端 - OpenID Connect 身份验证

可以通过以下方式向 CAS 注册客户端。

请注意,作为服务定义的 OpenID Connect 客户端是 CAS 中 OAuth 服务的扩展。适用于 OAuth 服务定义的所有设置在这里也应同样适用。

静态配准

OpenID Connect 客户端可以静态注册到 CAS,如下所示:

1

2

3

4

5

6

7

8

{

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

  "clientId": "client",

  "clientSecret": "secret",

  "serviceId" : "^<https://the-redirect-uri>",

  "name": "OIDC",

  "id": 1000}

 重定向 URI

客户端应用程序重定向 URI 是使用支持正则表达式模式的 serviceId 字段指定的。如果需要支持多个 URI,可以尝试将它们一起 OR 运算,或者可以构造支持和匹配所有 URI 的模式,只需稍作更改即可。

以下字段专门用于 OpenID Connect 服务:

版本

参考

clientId

必填。此客户端应用程序的标识符。

clientSecret

必填。此客户端应用程序的密钥。从服务接收的客户端密钥将进行 URL 解码,然后再与 CAS 服务定义中的密钥进行比较。

clientSecretExpiration

自选。时间(以 UTC 纪元为单位)client_secret将过期,如果不会过期,则为 0。

serviceId

必填。此 OIDC 客户端的授权重定向 URI。

supportedGrantTypes

自选。此服务支持的授权类型的集合。

supportedResponseTypes

自选。此服务支持的响应类型的集合。

signIdToken

自选。是否应对 ID 令牌进行签名。默认值为 true。

jwks

自选。保存此应用程序的密钥的密钥库位置的 Resource path。

jwksKeyId

自选。要在密钥库中查找的 JSON Web 密钥 ID。

jwksCacheDuration

自选。过期策略持续时间,即 PT1S,应用于此应用程序的已加载/缓存密钥。

encryptIdToken

自选。是否应加密 ID 令牌。默认值为 false。

idTokenEncryptionOptional

自选。如果没有可用的密钥库或加密密钥,是否应跳过 ID 令牌加密。默认值为 false。

includeIdTokenClaims

自选。是否应强制包含 ID 令牌声明,而不管请求/允许的响应或授权类型如何。默认值为 false。

idTokenIssuer

自选。覆盖 ID 令牌中的 iss 声明,该声明应仅在特殊情况下使用。请勿粗心地使用此设置,因为 ID 令牌的颁发者必须始终与身份提供商的颁发者匹配。

idTokenSigningAlg

自选。用于对 id 令牌进行签名的算法标头值。

idTokenEncryptionAlg

自选。用于加密 id 令牌的算法标头值。

idTokenEncryptionEncoding

自选。用于加密 id 令牌的算法方法标头值。

userInfoSigningAlg

自选。用于对用户配置文件响应进行签名的算法标头值。

userInfoEncryptedResponseAlg

自选。用于加密用户配置文件响应的算法标头值。

userInfoEncryptedResponseEncoding

自选。用于加密用户配置文件响应的算法方法标头值。

tokenEndpointAuthenticationMethod

自选。请求的令牌端点的客户端身份验证方法

applicationType

自选。web、native 或 blank。定义应用程序的类型。默认值(如果省略)为 web。

subjectType

从 public 或 pairwise 中选择的可选值。生成主体标识符时使用的类型。默认值为 public。

sectorIdentifierUri

自选。此 URL 的 Host 值用作成对标识符计算的扇区标识符。如果未定义,则将使用 serviceId 的 host 值。

 保留您需要的!

建议您仅保留和维护特定集成所需的属性和设置。没有必要获取所有服务字段的副本,并尝试根据其默认值再次配置它们。虽然您可能希望保留一份副本作为参考,但这种策略最终会导致糟糕的升级,增加中断更改的机会,并导致部署混乱。

服务定义通常由服务管理工具管理并向 CAS 注册。

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

自选

笔记

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

Show  entries

搜索:

·  cas.authn.oidc.services.defaults=

控制属于 OIDC 服务定义的字段的默认值初始值。这被定义为一个映射,其中 key 是字段名称(即 signIdToken),value 应该是默认值。如果服务定义显式定义了字段的值,则该值将接管,并且将忽略此处定义的默认值。如果服务定义未为字段定义值,并且未为该字段指定默认值,则直接分配给服务定义正文中字段的默认值将接管。

 org.apereo.cas.configuration.model.support.oidc.OidcServicesProperties.

如何配置此属性?

显示 1 到 1 的 1 个条目

上一页1下一页

下面是 OpenID Connect 依赖方的示例注册记录,该记录允许具有重定向 URI https://app.example.org/oidc的应用程序使用授权代码身份验证流向 CAS 发送授权请求。注册记录还指示 CAS 绕过批准/同意屏幕,并假定应在没有用户明确许可的情况下自动授予对请求的范围和权利要求的访问权限。

1

2

3

4

5

6

7

8

9

10

11

12

{

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

  "clientId": "client-id",

  "clientSecret": "secret",

  "serviceId": "^https://app.example.org/oidc",

  "name": "MyApplication",

  "id": 1,

  "bypassApprovalPrompt": true,

  "supportedResponseTypes": [ "java.util.HashSet", [ "code" ] ],

  "supportedGrantTypes": [ "java.util.HashSet", [ "authorization_code" ] ],

  "scopes" : [ "java.util.HashSet", [ "profile", "openid", "email" ] ]}

动态配准

客户端应用程序可以动态地注册到 CAS 进行身份验证。有关更多信息,请参阅本指南。

在 basic-auth 方案中用于请求初始访问令牌的用户名,该令牌随后将用于在 DynamicClientRegistrationModes#PROTECTED 模式下动态注册客户端。

 org.apereo.cas.configuration.model.support.oidc.OidcClientRegistrationProperties.

如何配置此属性?

显示 1 到 4 的 4 个条目

上一页1下一页

          1. 动态配准

注册终端节点对成功操作的响应将包含有关已注册实体的信息registration_access_token 中找到的访问令牌,该令牌可用于更新或检索在 registration_client_uri 中找到的已注册实体。

受保护的动态客户端注册

默认情况下,CAS 在 PROTECTED 模式下运行,其中 registrationendpoint 需要通过专门创建的主访问令牌进行用户身份验证,该令牌包含允许注册继续的必要范围。在注册客户端之前,您需要通过向 /oidc/initToken 终端节点发送 GET 请求来获取此访问令牌。此端点受基本身份验证方案保护,并将使用 CAS 配置中为动态注册指定的凭证对请求进行身份验证。响应中收到的访问令牌应作为 Bearer 授权标头传递给所有动态注册请求。

客户端配置

可以使用 /oidc/clientConfig 端点检索或更新动态注册到 CAS 的应用程序定义。此终端节点支持读取和更新操作的 GET 和 PATCH 请求。每个操作都需要一个 clientId 参数,该参数允许 CAS 查找以前注册的实体进行处理。使用 PATCH 的更新请求还可以在请求正文中指定更新的注册请求。如果确定客户端密钥已过期,则更新请求还可能会更新客户端的密钥并生成新的密钥。

        1. 发现
          1. 发现 - OpenID Connect 身份验证

OpenID Connect 发现是确定提供商位置的过程。发现将返回 OpenID/OAuth 终端节点、支持的范围和声明、用于对令牌进行签名的公有密钥以及其他详细信息的 JSON 列表。客户端可以使用此信息构建对 CAS OpenID Connect 服务器的请求。

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

自选

笔记

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

Show  entries

搜索:

·  cas.authn.oidc.discovery.acr-values-supported=

支持的 ACR 值列表。此 discovery 元素包含此服务器支持的受支持 acr 值的列表。对身份验证上下文类引用的支持以 acr_values 的形式作为原始授权请求的一部分实现,CAS 的多因素身份验证功能主要考虑这一点。成功后,acr 和 amr 值将作为 id 令牌的一部分传递回信赖方。

 org.apereo.cas.configuration.model.support.oidc.OidcDiscoveryProperties.

如何配置此属性?

·  cas.authn.oidc.discovery.authorization-response-issuer-parameter-supported=false

指示授权服务器是否在授权响应中提供 iss 参数的参数。

 org.apereo.cas.configuration.model.support.oidc.OidcDiscoveryProperties.

如何配置此属性?

·  cas.authn.oidc.discovery.backchannel-authentication-request-signing-alg-values-supported=

CAS 支持用于签名身份验证请求的 JWS 签名算法(alg 值)列表。如果省略,则 CAS 不支持签名身份验证请求。

 org.apereo.cas.configuration.model.support.oidc.OidcDiscoveryProperties.

如何配置此属性?

·  cas.authn.oidc.discovery.backchannel-token-delivery-modes-supported=

支持的用于 CIBA 的反向通道令牌传递模式。

 org.apereo.cas.configuration.model.support.oidc.OidcDiscoveryProperties.

如何配置此属性?

·  cas.authn.oidc.discovery.backchannel-user-code-parameter-supported=false

指定 OP 是否支持使用 user_code 参数的布尔值。

 org.apereo.cas.configuration.model.support.oidc.OidcDiscoveryProperties.

如何配置此属性?

显示 1 到 5 的 42 个条目

上一页12345...9下一页

        1. DPoP
          1. OpenID Connect 身份验证 - DPoP

DPoP 是一种 OAuth 安全扩展,用于将令牌绑定到属于客户端的私钥。与常见的 Bearer 令牌相反,该绑定使 DPoP 访问令牌受发送方约束,并且可以有效地检测和防止其重放(如果令牌泄露或被盗)。DPoP 用于保护公共客户端的令牌,例如单页应用程序 (SPA) 和移动应用程序。

单页应用程序 (SPA) 现在可以在充当 OpenID Connect 提供商时向 CAS 请求颁发 DPoP 访问令牌。这是一种新型令牌,具有比默认 Bearer 访问令牌更强的安全属性。DPoP 代币具有防止未经授权使用的保护,以防其遭受意外或恶意泄漏。这是通过将令牌绑定到客户端持有的私钥来实现的。为了防止密钥本身泄漏,客户端应将其存储在 API 后面,该 API 会使应用程序代码无法访问其私有参数。

使用 DPoP 令牌的 SPA 身份验证流程可以总结如下:

SPA 会生成新的 RSA 或 EC 密钥对,以便无法从浏览器中导出私钥参数。

为了请求 DPoP 访问令牌,SPA 会生成一个使用私钥签名的一次性 JWT。此 JWT 的功能是证明拥有密钥。其标头包括 JWK 格式的签名密钥的公有参数。

SPA 向 CAS 发出通常的令牌请求,但要触发 DPoP 访问令牌的颁发,证明 JWT 必须包含在名为 DPoP 的 HTTP 请求标头中。

如果 DPoP 证明有效并使用支持的 JWS 算法签名,则令牌响应将以通常的格式显示,但令牌类型设置为 DPoP。

要使用 DPoP 令牌(例如 CAS 中的profile终端节点)访问受保护的资源,客户端需要生成一个新的 DPoP 证明,并将一个额外的字符串ath访问令牌值的 BASE64URL 编码的 SHA-256 哈希值。htm (HTTP 方法) 和 htu (HTTP URI) 声明必须与资源的声明匹配。

请注意,CAS 中不需要特殊配置即可启用对 DPoP 令牌的支持;但是,您应该注意,目前,对 DPoP 的支持仅涵盖访问令牌。将来的版本中可能会提供对刷新令牌的支持。

        1. Token Authentication

OpenID Connect - 访问令牌身份验证方法

必须使用 OpenID Connect 发现中指定的任何客户端身份验证策略对访问令牌请求进行身份验证。CAS 支持以下方法:

方法

描述

client_secret_basic

Default。客户端 ID 和客户端密钥用于创建 HTTP Basic 身份验证方案。

client_secret_post

不推荐。client_id 和 client_secret 仅在请求正文中提供和接受。

client_secret_jwt

具有客户端密钥的客户端可以使用 HMAC SHA 算法创建 JWT,该算法是使用客户端密钥作为共享密钥计算的。JWT 作为client_assertion请求参数传递client_assertion_type并且参数必须为 urn:ietf:params:oauth:client-assertion-type:jwt-bearer。

private_key_jwt

具有已注册公有密钥的客户端使用该密钥构建并签署 JWT。JWT 作为client_assertion请求参数传递client_assertion_type并且参数必须为 urn:ietf:params:oauth:client-assertion-type:jwt-bearer。

tls_client_auth

利用将证书关联到客户端的 PKI 方法的双向 TLS。

请研究规范以了解更多信息。

可以为每个依赖方调整和控制强制和必需的客户端身份验证方法:

1

2

3

4

5

6

7

8

9

{

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

  "clientId": "client-id",

  "clientSecret": "secret",

  "serviceId": "^https://app.example.org/oidc",

  "name": "MyApplication",

  "id": 1,

  "tokenEndpointAuthenticationMethod": "client_secret_basic"}

如果 tokenEndpointAuthenticationMethod 字段留空,则会针对访问令牌请求评估所有可用的身份验证方法,并且应有效地禁用身份验证方法实施。

双向 TLS 客户端身份验证

为了使用 TLS 进行客户端身份验证,在 TLS 握手期间,必须使用相互 TLS X.509 证书身份验证建立或重新建立客户端与 CAS 之间的 TLS 连接。对于使用双向 TLS 客户端身份验证向 CAS 发送的所有请求,客户端必须包含 client_id 参数,该参数使 CAS 服务器能够独立于证书内容轻松识别客户端,并使用客户端标识符查找客户端配置,并根据该客户端的预期凭据检查 TLS 握手中提供的证书。

为了传达证书的预期使用者和其他验证要求,可以将以下参数分配给服务定义,以支持相互 TLS 客户端身份验证的 PKI 方法。此类参数也可以在注册 client 时通过 dynamic client registration 动态传递。使用 tls_client_auth 身份验证方法的信赖方必须恰好使用以下元数据参数之一来指示授权服务器在对相应客户端进行身份验证时预期的证书使用者值。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

{

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

  "clientId": "client-id",

  "clientSecret": "secret",

  "serviceId": "^https://app.example.org/oidc",

  "name": "MyApplication",

  "id": 1,

  "tokenEndpointAuthenticationMethod": "tls_client_auth",

  "tlsClientAuthSubjectDn": "...",

  "tlsClientAuthSanDns": "...",

  "tlsClientAuthSanUri": "...",

  "tlsClientAuthSanIp": "...",

  "tlsClientAuthSanEmail": "..."}

支持以下参数:

描述

tlsClientAuthSubjectDn

客户端将在互惠 TLS 身份验证中使用的证书的预期使用者可分辨名称。

tlsClientAuthSanDns

客户端将在相互 TLS 身份验证中使用的证书中预期的 dNSName SAN 条目。

tlsClientAuthSanUri

证书中预期的 uniformResourceIdentifier SAN 条目。

tlsClientAuthSanIp

IPv4 或 IPv6 的证书中预期的 iPAddress SAN 条目。

tlsClientAuthSanEmail

证书中预期的 rfc822Name SAN 条目。

        1. CIBA

OpenID Connect - 客户端发起的反向通道身份验证 (CIBA)

客户端发起的反向通道身份验证 (CIBA) 是一种新的身份验证流程,在该流程中,可以获取要身份验证的用户的有效标识符的依赖方将能够启动交互流程来验证其用户,而无需从消费设备进行最终用户交互。该流涉及从客户端到 CAS 的直接通信,而无需通过用户的浏览器进行重定向。

客户端应向反向通道身份验证端点发出“HTTP POST”请求,以请求最终用户身份验证。

CAS 将立即使用唯一标识符进行响应,该标识符在尝试在后台对用户进行身份验证时标识该身份验证。

客户端将通过轮询、Ping 或 Push 模式接收 ID 令牌、访问令牌和可选的刷新令牌。

请研究规范以了解更多信息。

配置

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

必填

自选

电子邮件服务器

笔记

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

Show  entries

搜索:

·  cas.authn.oidc.ciba.verification.mail.attribute-name=

指示此邮件的目标电子邮件地址的主体属性名称。这些属性必须已解析并可供 CAS 主体使用。当指定了多个属性时,将根据可用的 CAS 主体检查每个属性,以查找电子邮件地址值,这可能会导致发送多封电子邮件。

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

 org.apereo.cas.configuration.model.support.email.EmailProperties.

如何配置此属性?

·  cas.authn.oidc.ciba.verification.mail.from=

电子邮件发件人地址。

 org.apereo.cas.configuration.model.support.email.EmailProperties.

如何配置此属性?

·  cas.authn.oidc.ciba.verification.mail.subject=

主题可以定义为 verbaitm,也可以使用语法 #{subject-language-key} 指向语言包中的消息键。此键应指向在相应语言包中定义的有效消息,然后通过活动区域设置选取该消息。如果语言代码无法解析实际主题,则将使用默认主题值。

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

 org.apereo.cas.configuration.model.support.email.EmailProperties.

如何配置此属性?

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

上一页1下一页

应用

希望利用 CIBA 的应用程序可以在 CAS 中注册:

1

2

3

4

5

6

7

8

9

10

11

12

13

{

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

  "clientId": "client-id",

  "clientSecret": "secret",

  "serviceId": "^https://app.example.org/oidc",

  "name": "MyApplication",

  "id": 1,

  "supportedGrantTypes": [ "java.util.HashSet", [ "urn:openid:params:grant-type:ciba" ] ],

  "backchannelTokenDeliveryMode": "push",

  "backchannelClientNotificationEndpoint": "https://app.example.org/notify",

  "backchannelAuthenticationRequestSigningAlg": "",

  "backchannelUserCodeParameterSupported": false}

交货方式

客户端将通过poll、ping 或push模式接收 ID 令牌、访问令牌和可选的刷新令牌。当信赖方向 CAS 注册时,必须建立此选择。

轮询模式

在 Poll 模式下配置时,Client 将轮询 Token 端点以获取包含令牌的响应。也就是说,客户端通过使用 CIBA 授权类型轮询 CAS 令牌终端节点来检索身份验证结果。

Ping 模式

在 Ping 模式下配置时,CAS 将使用从 Backchannel 身份验证端点返回的唯一标识符向客户端之前注册的回调 URI 发送请求。收到通知后,Client 会向 token 端点发出请求以获取 token。

推送模式

在 Push 模式下配置时,CAS 会将带有令牌的 POST 请求发送到客户端之前注册的回调 URI。

        1. JWKS 公司
          1. 概述

JWKS - OpenID Connect 身份验证

JWKS(JSON Web 密钥集)终端节点和功能返回包含公钥的 JWKS,这些公钥使客户端能够验证 CAS 作为 OpenID Connect 提供商颁发的 JSON Web Token(JWT)。

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

自选

笔记

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

Show  entries

搜索:

·  cas.authn.oidc.jwks.core.jwks-cache-expiration=PT60M

超时,指示 JWKS 文件应在缓存中保留多长时间。

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

 org.apereo.cas.configuration.model.support.oidc.jwks.OidcJsonWebKeystoreCoreProperties.

如何配置此属性?

·  cas.authn.oidc.jwks.core.jwks-key-id=cas

要为密钥库中生成的密钥设置的密钥标识符。

 org.apereo.cas.configuration.model.support.oidc.jwks.OidcJsonWebKeystoreCoreProperties.

如何配置此属性?

·  cas.authn.oidc.jwks.core.jwks-key-size=2048

如果密钥库类型为 EC,则此处定义的密钥大小应切换为 256、384 或 521 之一。如果使用 EC,则大小应与所需的位数匹配。

 org.apereo.cas.configuration.model.support.oidc.jwks.OidcJsonWebKeystoreCoreProperties.

如何配置此属性?

·  cas.authn.oidc.jwks.core.jwks-type=RSA

用于处理身份验证令牌的签名/加密的 JWKS 的类型。接受的值为 RSA 或 EC。

 org.apereo.cas.configuration.model.support.oidc.jwks.OidcJsonWebKeystoreCoreProperties.

如何配置此属性?

显示 1 到 4 的 4 个条目

上一页1下一页

密钥库存储

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

密钥轮换

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

执行器端点

CAS 提供以下端点:

  GET

/cas/actuator/oidcJwks/rotate 

强制轮换密钥库中的密钥。

  GET

/cas/actuator/oidcJwks/revoke 

          1. 存储
            1. 概述

JWKS 存储 - OpenID Connect 身份验证

默认情况下,可以通过 CAS 属性预期全局密钥库并将其定义为文件系统上的路径。密钥库文件的格式类似于以下内容:

1

2

3

4

5

6

7

8

9

10

11

12

13

{

  "keys": [

    {

      "d": "...",

      "e": "AQAB",

      "use": "sig",

      "n": "...",

      "kty": "RSA",

      "kid": "cas",

      "state": 0

    }

  ]}

密钥库的内容可以通过此处概述的 CAS 配置安全性进行加密。

 集群部署

在集群中部署 CAS 时,必须确保所有 CAS 服务器节点都可以访问并共享密钥库文件的相同且完全相同的副本。密钥库差异将导致各种验证失败和应用程序集成问题。

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

必填

自选

笔记

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

Show  entries

搜索:

·  cas.authn.oidc.jwks.file-system.jwks-file=file:/etc/cas/config/keystore.jwks

用于处理身份验证令牌的签名/加密的 JWKS 文件资源的路径。密钥库的内容可以使用可用于所有其他 CAS 配置设置的相同加密和安全机制进行加密。此处的 setting 值也可以以原始格式定义;也就是说,您可以将密钥库的实际内容逐字传递给此设置,CAS 会将密钥库作为内存中资源加载。这在设置源位于 CAS 外部且不支持值从源动态加载到此设置的文件系统的情况下是相关的。请注意,如果指定路径中不存在密钥存储文件,则会为您生成一个密钥库文件。

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

 org.apereo.cas.configuration.model.support.oidc.jwks.FileSystemOidcJsonWebKeystoreProperties.

如何配置此属性?

显示 1 到 1 的 1 个条目

上一页1下一页

CAS 会自动监视和监视密钥库的更改。检测到更改时,CAS将使缓存失效,并再次重新加载密钥库。

高深

以下替代策略可用于生成、管理和存储 JSON Web 密钥库。

选择

参考

Groovy

请参阅此页面

JPA

请参阅此页面

MongoDb 数据库

请参阅此页面

REST

请参阅此页面

自定义

请参阅此页面

            1. Groovy

OpenID Connect 身份验证 JWKS 存储 - Groovy

密钥库生成可以外包给外部 Groovy 脚本,其主体应定义如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

import org.apereo.cas.oidc.jwks.*import org.jose4j.jwk.*

def run(Object[] args) {

    def (logger) = args

    logger.info("Generating JWKS for CAS...")

    def jsonWebKeySet = "{ \"keys\": [...] }"

    return jsonWebKeySet}

def store(Object[] args) {

    def (jwks,logger) = args

    logger.info("Storing JWKS for CAS...")

    return jwks}

def find(Object[] args) {

    def (logger) = args

    logger.info("Looking up JWKS...")

    return new JsonWebKeySet(...)}

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

必填

Groovy 脚本

笔记

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

Show  entries

搜索:

·  cas.authn.oidc.jwks.groovy.location=

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

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

如何配置此属性?

显示 1 到 1 的 1 个条目

上一页1下一页

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

            1. JPA
              1. OpenID Connect 身份验证 JWKS 存储 - JPA

密钥库生成可以外包给外部关系数据库,例如 MySQL 等。

通过在 WAR Overlay 中包含以下模块来启用支持:

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

要了解如何配置数据库驱动程序和 JPA 实施选项,请查看本指南。

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

必填

自选

Hibernate 和 JDBC

笔记

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

Show  entries

搜索:

·  cas.authn.oidc.jwks.jpa.driver-class=org.hsqldb.jdbcDriver

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

 org.apereo.cas.configuration.model.support.oidc.jwks.JpaOidcJsonWebKeystoreProperties.

如何配置此属性?

·  cas.authn.oidc.jwks.jpa.password=

数据库连接密码。

 org.apereo.cas.configuration.model.support.oidc.jwks.JpaOidcJsonWebKeystoreProperties.

如何配置此属性?

·  cas.authn.oidc.jwks.jpa.url=jdbc:hsqldb:mem:cas-hsql-database

数据库连接 URL。

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

 org.apereo.cas.configuration.model.support.oidc.jwks.JpaOidcJsonWebKeystoreProperties.

如何配置此属性?

·  cas.authn.oidc.jwks.jpa.user=sa

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

 org.apereo.cas.configuration.model.support.oidc.jwks.JpaOidcJsonWebKeystoreProperties.

如何配置此属性?

显示 1 到 4 的 4 个条目

上一页1下一页

            1. MongoDb
              1. OpenID Connect 身份验证 JWKS 存储 - MongoDb

密钥库生成可以外包给外部 MongoDb 实例。

通过在 WAR Overlay 中包含以下模块来启用支持:

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-oidc-mongo"}

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

必填

自选

笔记

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

Show  entries

搜索:

·  cas.authn.oidc.jwks.mongo.client-uri=

mongodb 实例的连接 URI。这通常采用 mongodb://user:psw@ds135522.somewhere.com:35522/db 的形式。如果未指定,将回退到其他单个设置。如果指定,则接管所有其他设置(如果适用)。

 org.apereo.cas.configuration.model.support.oidc.jwks.MongoDbOidcJsonWebKeystoreProperties.

如何配置此属性?

·  cas.authn.oidc.jwks.mongo.collection=

要获取和/或创建的 MongoDb 数据库集合名称。

 org.apereo.cas.configuration.model.support.oidc.jwks.MongoDbOidcJsonWebKeystoreProperties.

如何配置此属性?

·  cas.authn.oidc.jwks.mongo.database-name=

MongoDb 数据库实例名称。

 org.apereo.cas.configuration.model.support.oidc.jwks.MongoDbOidcJsonWebKeystoreProperties.

如何配置此属性?

·  cas.authn.oidc.jwks.mongo.host=localhost

用于身份验证的 MongoDb 数据库主机。可以定义多个主机地址,用逗号分隔。如果定义了多个主机,则假定每个主机也包含端口(如果有)。否则,配置可能会回退到定义的端口。

 org.apereo.cas.configuration.model.support.oidc.jwks.MongoDbOidcJsonWebKeystoreProperties.

如何配置此属性?

·  cas.authn.oidc.jwks.mongo.password=

用于身份验证的 MongoDb 数据库密码。

 org.apereo.cas.configuration.model.support.oidc.jwks.MongoDbOidcJsonWebKeystoreProperties.

如何配置此属性?

显示 1 到 5 的 7 个条目

上一页12下一页

            1.  REST
              1. OpenID Connect 身份验证 JWKS 存储 - REST

密钥库生成可以外包给外部 REST API。端点必须设计为接受/处理 application/json,并且通常应返回 2xx 响应状态代码。

CAS 向终端节点发出以下请求:

操作

参数

描述

结果

GET

不适用

检索密钥库,或生成一个密钥库。

2xx 状态码;JWKS 资源。

POST

JWKS 在请求正文中。

存储密钥库。

2xx 状态代码。

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

必填

自选

笔记

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

Show  entries

搜索:

·  cas.authn.oidc.jwks.rest.url=

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

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

 org.apereo.cas.configuration.model.support.oidc.jwks.RestfulOidcJsonWebKeystoreProperties.

如何配置此属性?

显示 1 到 1 的 1 个条目

上一页1下一页

            1. 自定义
              1. OpenID Connect 身份验证 JWKS 存储 - 自定义

可以使用@Bean以下将在 @AutoConfiguration 类中注册的密钥库生成策略来设计自己的密钥库生成策略并将其注入 CAS 中:

1

2

3

4

@Bean(initMethod = "generate")public OidcJsonWebKeystoreGeneratorService oidcJsonWebKeystoreGeneratorService() {

    return new MyJsonWebKeystoreGeneratorService(...);}

您的配置类需要向 CAS 注册。有关更多详细信息,请参阅本指南。

            1. 旋转

JWKS 轮换 - OpenID Connect 身份验证

密钥轮换是指密钥停用并替换为生成新的加密密钥。定期轮换密钥是行业标准,并遵循加密最佳实践。

您可以定期手动轮换密钥以更改 JSON Web 密钥 (JWK) 密钥,也可以在 CAS 配置中配置适当的 schedule,以便它自动为您轮换密钥。

 旋转引导

NIST 指南似乎建议至少每两年轮换一次。在实践中,规模适中的中规中矩的 CAS 部署往往每六个月轮换一次密钥,可以按计划手动或自动轮换。

由 CAS 生成并放入密钥库的密钥带有一个额外的 state 参数,该参数指示已分配密钥的生命周期状态。以下值是接受的生命周期状态:

价值

描述

0

该密钥是 active 和 current,用于所需的操作。

1

该密钥将是密钥轮换期间使用的下一个密钥。

2

该密钥不再使用和活动,并将在吊销操作后删除。

CAS 一次始终只使用一个签名密钥进行签名,通常是从密钥库列出并加载的第一个密钥,根据 state 参数判断该密钥被视为活动密钥和当前密钥。为了向后兼容,缺少 thisparameter 表示该密钥处于活动状态且为当前密钥。

动态发现终端节点将始终包括当前密钥和下一个密钥,如果上一个密钥尚未被撤销,则它还可能包括上一个密钥。为了在紧急情况下提供无缝体验,客户端应用程序应该能够使用发现文档中指定的任何密钥。

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

自选

笔记

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

Show  entries

搜索:

·  cas.authn.oidc.jwks.revocation.schedule.cron-expression=

一个类似 cron 的表达式,扩展了通常的 UN*X 定义,以包括秒、分钟、小时、月日、月和星期几的触发器。例如,0 * * * * MON-FRI 表示工作日每分钟一次(在分钟的顶部 - 第 0 秒),或 0 0 0 * * * 表示每天午夜。* 请注意,定义 cron 表达式时,必须删除 start delay 和 repeat interval 设置并将其设置为空白。

 org.apereo.cas.configuration.model.support.quartz.SchedulingProperties.

如何配置此属性?

·  cas.authn.oidc.jwks.revocation.schedule.cron-time-zone=

将解析 cron 表达式的时区。默认情况下,此属性为空(即将使用调度程序的时区)。

 org.apereo.cas.configuration.model.support.quartz.SchedulingProperties.

如何配置此属性?

·  cas.authn.oidc.jwks.revocation.schedule.enabled-on-host=.*

如果此属性与 CAS 服务器的主机名不匹配,则覆盖 SchedulingProperties#enabled 属性值 true。如果在 statefulset 中部署带有镜像的 CAS,其中所有名称都是可预测的,但很难为不同的服务器使用不同的配置,那么这可能很有用。该值可以是确切的主机名,也可以是将用于匹配主机名的正则表达式。

此设置支持正则表达式模式。[?].

 org.apereo.cas.configuration.model.support.quartz.SchedulingProperties.

如何配置此属性?

·  cas.authn.oidc.jwks.revocation.schedule.enabled=true

是否应启用计划程序来计划作业运行。

 org.apereo.cas.configuration.model.support.quartz.SchedulingProperties.

如何配置此属性?

·  cas.authn.oidc.jwks.revocation.schedule.repeat-interval=PT2M

为数据存储实施重新加载数据的重复间隔的字符串表示形式。这是连续任务执行之间的超时。

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

 org.apereo.cas.configuration.model.support.quartz.SchedulingProperties.

如何配置此属性?

显示 1 到 5 的 12 个条目

上一页123下一页

自定义

可以使用将在 @AutoConfiguration 类中注册的以下@Bean设计自己的密钥轮换和吊销策略并将其注入 CAS:

1

2

3

4

@Beanpublic OidcJsonWebKeystoreRotationService oidcJsonWebKeystoreRotationService() {

    return new MyJsonWebKeystoreRotationService();}

您的配置类需要向 CAS 注册。有关更多详细信息,请参阅本指南。

        1. 注销

注销 - OpenID Connect 身份验证

控制作为 OpenID Connect 身份提供商的 CAS 注销功能的各个方面。

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

自选

笔记

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

Show  entries

搜索:

·  cas.authn.oidc.logout.backchannel-logout-supported=true

是否支持反向通道注销。

 org.apereo.cas.configuration.model.support.oidc.OidcLogoutProperties.

如何配置此属性?

·  cas.authn.oidc.logout.frontchannel-logout-supported=true

是否支持前通道注销。

 org.apereo.cas.configuration.model.support.oidc.OidcLogoutProperties.

如何配置此属性?

显示 1 到 2 的 2 个条目

上一页1下一页

        1. 索赔
          1. 概述

声明 - OpenID Connect 身份验证

OpenID Connect 声明被视为需要解析、映射和发布的普通 CAS 属性。

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

必填

自选

笔记

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

Show  entries

搜索:

·  cas.authn.oidc.core.issuer=http://localhost:8080/cas/oidc

CAS 主要支持每个部署/主机使用单个颁发者。

 org.apereo.cas.configuration.model.support.oidc.OidcCoreProperties.

如何配置此属性?

显示 1 到 1 的 1 个条目

上一页1下一页

基于范围的声明

请参阅本指南。

映射声明

请参阅本指南。

解除索赔

请参阅本指南。

成对标识符

请参阅本指南。

主题标识符声明

请参阅本指南。

          1. 基于范围的声明 - OpenID Connect 身份验证

您可以链接各种属性发布策略,这些策略根据特定范围授权声明发布:

1

2

3

4

5

6

7

8

9

10

11

{

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

  "clientId": "...",

  "clientSecret": "...",

  "serviceId" : "...",

  "name": "OIDC Test",

  "id": 10,

  "scopes" : [ "java.util.HashSet",

    [ "openid", "profile", "email", "address", "phone", "offline_access" ]

  ]}

在内部对预定义声明进行编目的标准范围都属于命名空间 org.apereo.cas.oidc.claims,如下所述:

政策

描述

o.a.c.o.c.OidcProfileScopeAttributeReleasePolicy

映射到 spec 预定义profile范围的 Release 声明。

o.a.c.o.c.OidcEmailScopeAttributeReleasePolicy

版本声明映射到规范预定义的email范围。

o.a.c.o.c.OidcAddressScopeAttributeReleasePolicy

映射到 spec 预定义address范围的 Release 声明。

o.a.c.o.c.OidcPhoneScopeAttributeReleasePolicy

版本声明映射到 spec 预定义的phone范围。

o.a.c.o.c.OidcAssuranceScopeAttributeReleasePolicy

版本声明映射到assurance范围

o.a.c.o.c.OidcCustomScopeAttributeReleasePolicy

发布到 CAS 定义的custom范围的发布声明。

用户定义的范围

请注意,除了标准系统范围之外,您还可以使用以下许多属性定义自己的自定义范围:

1

2

3

4

5

6

7

8

9

{

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

  "clientId": "...",

  "clientSecret": "...",

  "serviceId" : "...",

  "name": "OIDC Test",

  "id": 10,

  "scopes" : [ "java.util.HashSet", [ "eduPerson" ] ]}

 用法

所有用户定义的自定义范围以及将映射到这些范围的任何自定义声明必须始终通过 OpenID Connect 发现文档进行公布,并在 CAS 设置中指定,以便在声明处理期间将范围和声明识别为有效。

但是,如果您希望将自定义范围定义为 OpenID Connect 定义的扩展,以便可以将属性捆绑在一起,那么您需要首先注册scope,定义其属性包,然后将其用于给定的服务定义,例如上面的 eduPerson。此类用户定义的范围还可以覆盖系统范围的定义。

          1. 映射声明 - OpenID Connect 身份验证

与范围关联的声明(即 profile)在 given_name OpenID 规范中是固定的。如果自定义任意属性应映射到声明,则可以在 CAS 设置中定义映射,以将 CAS 定义的属性链接到固定的给定范围。例如,CAS 配置可能允许映射属性 sys_given_name 的值并将其分配给声明given_name,而不会影响属性解析配置和所有其他启用了 CAS 的应用程序。

如果未定义映射,则默认情况下,CAS 属性应与声明名称匹配。

在 CAS 设置中定义的声明映射规则是全局规则,适用于所有应用程序和请求。将声明映射到属性(即preferred_username映射到 uid)后,此映射规则将接管所有声明处理规则和条件。

映射每个服务的声明

还可以使用下述规则为每个应用程序定义声明映射规则:

标准范围

用户定义的范围

下面的配置将允许 CAS 将 uid 属性的值映射到 preferred_username 声明,该声明是为响应来自应用程序 Sample 的身份验证请求而构建的。此处的声明映射规则仅适用于此应用程序,不会影响任何其他应用程序或全局映射规则(如果有)。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

{

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

  "clientId": "client",

  "clientSecret": "secret",

  "serviceId": "^https://...",

  "name": "Sample",

  "id": 1,

  "scopes" : [ "java.util.HashSet", [ "openid", "profile" ] ],

  "attributeReleasePolicy": {

    "@class": "org.apereo.cas.oidc.claims.OidcProfileScopeAttributeReleasePolicy",

    "claimMappings" : {

      "@class" : "java.util.TreeMap",

      "preferred_username" : "uid"

    }

  }}

解除索赔

请参阅本指南以了解更多信息。

成对标识符

当使用pairwise主题类型时,CAS 将为每个扇区标识符计算一个唯一的sub值。此标识符不应由 CAS 以外的任何一方逆转,并且有点类似于 CAS 生成持久性匿名用户标识符。提供给每个信赖方的每个值都是不同的,因此不会使客户端能够在未经许可的情况下关联用户的活动。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

{

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

  "clientId": "client",

  "clientSecret": "secret",

  "serviceId" : "^<https://the-redirect-uri>",

  "subjectType": "pairwise",

  "usernameAttributeProvider" : {

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

    "persistentIdGenerator" : {

      "@class" : "org.apereo.cas.authentication.principal.OidcPairwisePersistentIdGenerator",

      "salt" : "aGVsbG93b3JsZA=="

    }

  }}

主题标识符声明

要控制和修改每个 OpenID Connect 依赖方的 sub 声明的值,您可以更改应用程序定义以返回已为主体解析的属性,作为此服务的 sub 声明值。

1

2

3

4

5

6

7

8

9

10

11

{

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

  "clientId": "client",

  "clientSecret": "secret",

  "serviceId" : "^<https://the-redirect-uri>",

  "scopes" : [ "java.util.HashSet", [ "openid", "profile" ] ]

  "usernameAttributeProvider" : {

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

    "usernameAttribute" : "cn"

  }}

通常,此处介绍的 CAS 可用的所有其他构造(用于控制与客户端应用程序共享的主体标识符)也可用于控制 sub 声明。

          1. 释放声明 - OpenID Connect 身份验证

为给定服务定义,并在内部构建属性发布策略。此类属性 releasepolicies 允许发布标准声明、将属性重新映射到标准声明或完全定义自定义声明和范围。

还可以在范围范围之外定义和使用自由格式的属性发布策略,以自由构建和发布声明/属性。

 ID 令牌声明

根据 OpenID Connect 规范,仅当响应类型设置为 id_token 时,OpenID 范围请求的各个声明(例如profile、email等)才会放入 OpenID Connect ID 令牌中。为了帮助实现向后兼容性和不合规的应用程序集成,CAS 提供了在 ID 令牌中强制包含声明的选项,但请注意,这应该是最后一种解决方法,因为这样做很可能违反了 OpenID Connect 规范。应从 userinfo/profile 端点请求声明,以换取由相应响应类型指示的访问令牌。

标准

范围自由

混合

索赔筛选

以下服务定义将根据 scopes profile 和 email 的语义来决定相关的属性发布策略。无需设计或列出单个声明,因为 CAS 将自动配置相关的属性发布策略:

1

2

3

4

5

6

7

8

9

10

11

{

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

  "clientId": "client",

  "clientSecret": "secret",

  "serviceId" : "...",

  "name": "OIDC",

  "id": 1,

  "scopes" : [ "java.util.HashSet",

    [ "openid", "profile", "email" ]

  ]}

要了解有关属性发布策略和命令链的更多信息,请参阅本指南。

          1. 成对标识符 - OpenID Connect 身份验证

当使用pairwise主题类型时,CAS 将为每个扇区标识符计算一个唯一的sub值。此标识符不应由 CAS 以外的任何一方逆转,并且有点类似于 CAS 生成持久性匿名用户标识符。提供给每个信赖方的每个值都是不同的,因此不会使客户端能够在未经许可的情况下关联用户的活动。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

{

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

  "clientId": "client",

  "clientSecret": "secret",

  "serviceId" : "^<https://the-redirect-uri>",

  "subjectType": "pairwise",

  "usernameAttributeProvider" : {

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

    "persistentIdGenerator" : {

      "@class" : "org.apereo.cas.authentication.principal.OidcPairwisePersistentIdGenerator",

      "salt" : "aGVsbG93b3JsZA=="

    }

  }}

          1. 主题标识符声明 - OpenID Connect 身份验证

要控制和修改每个 OpenID Connect 依赖方的 sub 声明的值,您可以更改应用程序定义以返回已为主体解析的属性,作为此服务的 sub 声明值。

1

2

3

4

5

6

7

8

9

10

11

{

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

  "clientId": "client",

  "clientSecret": "secret",

  "serviceId" : "^<https://the-redirect-uri>",

  "scopes" : [ "java.util.HashSet", [ "openid", "profile" ] ]

  "usernameAttributeProvider" : {

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

    "usernameAttribute" : "cn"

  }}

通常,此处介绍的 CAS 可用的所有其他构造(用于控制与客户端应用程序共享的主体标识符)也可用于控制 sub 声明。

          1. 自定义声明 - OpenID Connect 身份验证

如果您希望设计自己的声明组装策略并将声明收集到 ID 令牌中,则可以在您的环境中定义以下 bean 定义:

1

2

3

4

5

6

7

@AutoConfigurationpublic class MyOidcConfiguration {

    @Bean

    public OidcIdTokenClaimCollector oidcIdTokenClaimCollector() {

        return new MyIdTokenClaimCollector();

    }}

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

          1. OpenID Connect 声明定义

可以使用 OidcAttributeDefinition 定义专门适用于作为 OpenID Connect 响应一部分的属性发布的属性定义。使用此定义定义属性不会阻止其他协议释放该属性。

1

2

3

4

5

6

7

8

9

{

  "@class": "java.util.TreeMap",

  "mail": {

    "@class": "org.apereo.cas.oidc.claims.OidcAttributeDefinition",

    "key": "mail",

    "structured": false,

    "trustFramework": "eidas"

  }}

可以为 OpenID Connect 属性定义指定以下附加设置:

名字

描述

structured

默认值为 false。确定是否应将生成的属性编码为分层/结构化属性,仅当分配给属性定义name指示分层布局(如 parent.child.child时才激活

trustFramework

默认值为空。将强制 CAS 将此声明标记为已验证声明的 Identity Assurance 信任框架的名称。

要了解有关属性定义的更多信息,请参阅本指南。

        1. 令牌过期策略 - OpenID Connect 身份验证

OpenID Connect 令牌的过期策略由 CAS 设置和属性控制。这些设置通常与为 OAuth 协议定义的设置相同。还可以为向 CAS 注册的每个应用程序控制和定义过期策略。

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

ID 令牌

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

自选

笔记

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

Show  entries

搜索:

·  cas.authn.oidc.id-token.include-id-token-claims=true

请注意,默认情况下,此设置设置为 true,主要是为了保持与以前的 CAS 版本的向后兼容性,这些版本将声明包含在 ID 令牌中,而不考虑响应类型。此设置的行为可能会更改,并且可能会在将来的 CAS 版本中删除。

 org.apereo.cas.configuration.model.support.oidc.OidcIdTokenProperties.

如何配置此属性?

·  cas.authn.oidc.id-token.max-time-to-live-in-seconds=PT8H

硬超时以终止 id 令牌并使其过期。

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

 org.apereo.cas.configuration.model.support.oidc.OidcIdTokenProperties.

如何配置此属性?

显示 1 到 2 的 2 个条目

上一页1下一页

每项服务

某些 ID 令牌的过期策略可以基于每个应用程序有条件地决定。id 令牌过期策略要偏离默认配置的候选服务必须按照以下代码段所示进行设计。

1

2

3

4

5

6

7

8

9

10

11

12

{

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

  "clientId": "clientid",

  "clientSecret": "clientSecret",

  "serviceId" : "^(https|imaps)://<redirect-uri>.*",

  "name" : "Service",

  "id" : 1,

  "idTokenExpirationPolicy": {

    "@class": "org.apereo.cas.support.oauth.services.DefaultRegisteredServiceOidcIdTokenExpirationPolicy",

    "timeToLive": "PT60S"

  }}

        1. PAR - OpenID Connect 身份验证

推送授权请求 (PAR) 允许客户端通过直接请求将 OIDC 授权请求的负载推送到 CAS。此推送的结果为客户端提供了一个请求 URI,该 URI 用作通过 user-agent 对授权终端节点的后续调用中的数据的引用。

PAR 通过为客户提供一种简单的方法来处理机密和完整性保护的授权请求,从而提高安全性。需要更高安全级别的客户端,尤其是加密确认的不可否认性,能够在执行推送的授权请求时使用基于 JWT 的请求对象。

PAR 允许 CAS 在发生任何用户交互之前对客户端进行身份验证。在授权过程中对客户端身份的信心增加,使授权服务器能够在授权过程中更早地拒绝非法请求,这可以防止试图欺骗客户端或以其他方式篡改或滥用授权请求。

典型的交换将允许客户端通过 POST 将授权请求推送到 oidcPushAuthorize 终端节点。此请求的结果通常会生成如下request_uri:

1

2

3

4

{

  "expires_in": 30,

  "request_uri": "OPAR-1-..."}

然后,可以将 request_uri 参数提交回 CAS 的授权终端节点,以恢复和恢复请求。

配置

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

自选

笔记

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

Show  entries

搜索:

·  cas.authn.oidc.par.max-time-to-live-in-seconds=PT30S

硬超时以终止 PAR 令牌并使其过期。

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

 org.apereo.cas.configuration.model.support.oidc.OidcPushedAuthorizationProperties.

如何配置此属性?

·  cas.authn.oidc.par.number-of-uses=1

控制请求可在 CAS 服务器中使用的次数。

 org.apereo.cas.configuration.model.support.oidc.OidcPushedAuthorizationProperties.

如何配置此属性?

·  cas.authn.oidc.par.storage-name=oidcPushedAuthzRequestsCache

CAS 使用和创建的存储对象名称,用于在后备票证注册表实现中保存 PAR。

 org.apereo.cas.configuration.model.support.oidc.OidcPushedAuthorizationProperties.

如何配置此属性?

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

上一页1下一页

        1. JWT 安全授权响应模式 (JARM) - OpenID Connect 身份验证

JWT 安全授权响应 (JARM) 允许使用多种策略,这些策略允许基于 JWT 的新模式将授权响应编码回客户端。此机制通过支持响应的签名和可选加密来增强标准授权响应的安全性。签名响应提供消息完整性、发件人身份验证、受众限制和防止混淆攻击。加密响应可提供响应参数值的机密性。

可以标记 CAS 中的信赖方定义以生成 JWT 授权响应:

1

2

3

4

5

6

7

8

9

10

{

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

  "clientId": "client",

  "serviceId": "https://app.example.org/redirect",

  "name": "Sample",

  "id": 1,

  "scopes" : [ "java.util.HashSet", [ "profile", "openid" ] ],

  "supportedResponseTypes": [ "java.util.HashSet", [ "code" ] ],

  "responseMode": "query.jwt"}

CAS 生成的 JWT 授权响应可以签名和/或加密。签名和加密策略应与 ID 令牌或访问令牌的策略非常相似。

以下示例显示了成功code授权响应的 JWT 声明:

1

2

3

4

5

6

7

{

    "iss": "https://sso.example.com/cas/oidc",

    "aud": "client",

    "exp": 1311281970,

    "code": "OC-1-...",

    "state": "..."}

查询

片段

表单帖子

响应模式 query.jwt 会导致 CAS 将授权响应作为 HTTP redirect 发送到客户端的重定向 URI。CAS 将包含 JWT 的参数response添加到重定向 URI 的查询组件中:

1

2

HTTP/1.1 302 Found

Location: https://app.example.org/redirect?response=eyJraWQiOiJsYWViIiwiYWxnIjoiRVMyN...

配置

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

自选

笔记

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

Show  entries

搜索:

·  cas.authn.oidc.jarm.expiration=PT60S

硬超时以终止 JWT 令牌并使其过期。

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

 org.apereo.cas.configuration.model.support.oidc.OidcJwtAuthorizationResponseModeProperties.

如何配置此属性?

显示 1 到 1 的 1 个条目

上一页1下一页

        1. WebFinger 颁发者发现 - OpenID Connect 身份验证

OpenID Provider Issuer 发现是确定 OpenID Connect Provider 位置的过程。颁发者发现是可选的;如果依赖方通过带外机制知道 OP 的 Issuer 位置,则可以跳过此步骤。

颁发者发现需要以下信息才能发出发现请求:

参数

描述

resource

必填。作为发现请求主题的目标最终用户的标识符。

host

托管 WebFinger 服务的服务器。

rel

标识正在请求其位置的服务类型的 URI:http://openid.net/specs/connect/1.0/issuer

要开始发现 OpenID 终端节点,最终用户需要向依赖方提供标识符。RP 将规范化规则应用于 Identifier,以确定 Resource 和 Host。然后,它使用 resource 和 rel 参数向 CAS WebFinger 终端节点发出 HTTP GET 请求,以获取所请求服务的位置。在 WebFinger 响应中,必须将颁发者位置作为 rel 成员值为 http://openid.net/specs/connect/1.0/issuer 的 links 数组元素的 href 成员的值返回。

webfinger 终端节点的示例调用如下:

1

curl https://sso.example.org/cas/oidc/.well-known/webfinger?resource=acct:casuser@somewhere.example.org

预期响应应与以下示例匹配:

1

2

3

4

5

6

7

8

9

{

  "subject": "acct:casuser@somewhere.example.org",

  "links": [

    {

      "rel": "http://openid.net/specs/connect/1.0/issuer",

      "href": "https://sso.example.org/cas/oidc/"

    }

  ]}

WebFinger 资源用户信息

要确定正确的颁发者,可以使用外部用户emailusername找到和获取使用 acct URI 方案提供给 webfinger 发现终端节点的资源。

 使用警告!

默认存储库实现将回传提供的电子邮件或用户名等,因为它仅与演示/测试目的相关。

以下 user-info 存储库选项可用于配置和生产使用。

Groovy UserInfo 存储库

可以使用外部 Groovy 脚本来处理查找链接到 webfinger 资源的帐户的任务,该脚本的大纲将与以下内容匹配:

1

2

3

4

5

6

7

8

9

def findByUsername(Object[] args) {

    def (username,logger) = args

    return [username: username]}

def findByEmailAddress(Object[] args) {

    def (email,logger) = args

    return [email: email]}

该脚本的预期返回值是包含键值对象的 Map,表示用户帐户详细信息。空 Map将指示缺少用户记录,从而导致 404 响应状态返回给依赖方。

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

必填

Groovy 脚本

笔记

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

Show  entries

搜索:

·  cas.authn.oidc.webfinger.user-info.groovy.location=

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

 org.apereo.cas.configuration.model.support.oidc.OidcWebFingerProperties.Groovy.

如何配置此属性?

显示 1 到 1 的 1 个条目

上一页1下一页

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

REST UserInfo 存储库

REST 存储库允许 CAS 服务器通过配置的 HTTP 方法访问远程 REST 端点,以获取用户帐户信息。

查询数据emailusername HTTP 标头传递。返回的响应必须附有 200状态代码,其中正文应包含表示用户帐户信息的 Map。所有其他响应都将导致 404 响应状态返回给依赖方。

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

必填

自选

笔记

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

Show  entries

搜索:

·  cas.authn.oidc.webfinger.user-info.rest.url=

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

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

 org.apereo.cas.configuration.model.support.oidc.OidcWebFingerProperties.Rest.

如何配置此属性?

显示 1 到 1 的 1 个条目

上一页1下一页

自定义 UserInfo 存储库

可以设计您自己的 webfinger 用户存储库版本并将其注入 CAS。首先,您需要设计一个 @AutoConfiguration 类来包含您自己的 OidcWebFingerUserInfoRepository 实现:

1

2

3

4

5

6

7

8

9

@AutoConfiguration@EnableConfigurationProperties(CasConfigurationProperties.class)public class CustomWebFingerUserInfoConfiguration {

    @Bean

    public OidcWebFingerUserInfoRepository oidcWebFingerUserInfoRepository() {

        ...

    }}

您的配置类需要向 CAS 注册。有关更多详细信息,请参阅本指南。

        1. OpenID Connect - 身份保证

身份保证定义了 OpenID Connect 的扩展,用于为依赖方提供经过验证的声明,以及有关这些声明的验证状态(什么、如何、何时、根据什么规则、使用什么证据)的明确声明。此规范旨在支持需要强大保证的使用案例,例如,遵守监管要求,例如,遵守反洗钱法或访问健康数据、风险缓解或欺诈预防等法规要求。

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

必填

笔记

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

Show  entries

搜索:

·  cas.authn.oidc.identity-assurance.verification-source.location=

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

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

如何配置此属性?

显示 1 到 1 的 1 个条目

上一页1下一页

Identity Assurance 声明

CAS 提供了一个特殊的预定义内置范围,即带有特殊身份保证声明的assurance。为了满足某些司法管辖区对身份保证的要求,除了 OpenID Connect 规范中定义的声明之外,身份保证还定义了用于传输最终用户数据的特定声明。此类声明包括nationalities、birth_family_name、birth_given_name、msisdn、place_of_birth 等。

允许信赖方接收按assurance范围分组的声明,可以按如下方式完成:

1

2

3

4

5

6

7

8

9

10

11

{

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

  "clientId": "...",

  "clientSecret": "...",

  "serviceId" : "...",

  "name": "OIDC",

  "id": 1,

  "scopes" : [ "java.util.HashSet",

    [ "openid", "profile", "assurance" ]

  ]}

Identity Assurance 审计

CAS 生成的 ID 令牌带有一个特殊的 txn 声明,用于身份保证上下文,以在 OpenID Connect 交易中涉及的各方之间构建审计跟踪。CAS 审计记录维护与 txn 声明关联的相应审计跟踪,其中至少包含以下详细信息:

txn 下的交易 ID

authn_methods 下采用的身份验证方法

生成的 ID 令牌本身

 ID 令牌

显示在 CAS 审计日志中的生成的 ID 令牌不会解压缩以以纯文本模式显示和/或记录声明。ID 令牌按原样显示,并且可能会进行签名和/或加密,具体取决于依赖方配置。

身份验证

默认情况下,身份验证验证记录是从 JSON 文件加载的,该文件的路径被教给 CASvia 配置属性。该文件可能包含多个验证记录:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

[

    {

        "trust_framework": "eidas",

        "assurance_level": "substantial"

    },

    {

        "trust_framework": "it_spid",

        "time": "2019-04-20T20:16Z",

        "verification_process": "b54c6f-6d3f-4ec5-973e-b0d8506f3bc7",

        "evidence": [

            {

              "type": "document",

              "validation_method": {

                "type": "vcrypt"

              },

              "verification_method": {

                  "type": "bvr"

              },

              "time": "2019-04-20T20:11Z",

              "document_details": {

                "type": "passport",

                "issuer": {

                  "name": "Ministro Affari Esteri",

                  "country": "ITA"

                },

                "document_number": "83774554",

                "date_of_issuance": "2011-04-20",

                "date_of_expiry": "2021-04-19"

              }

            }

        ]

    }]

在生成 ID 令牌或用户配置文件有效负载时,标记为可验证并分配了信任框架的声明或属性定义将受到特殊处理。finalpayload 中已验证声明的粗略概述可能是:

1

2

3

4

5

6

7

8

9

10

11

12

13

{

  "verified_claims": {

    "verification": {

      "trust_framework": "eidas",

      "assurance_level": "substantial"

    },

    "claims": {

      "given_name": "Max",

      "family_name": "Meier",

      "birthdate": "1956-01-28"

    }

  }}

自定义

如果您希望设计自己的身份验证验证源,您可以插入 AssuranceVerificationSource 的自定义实现,以便您自己处理:

1

2

3

4

@Beanpublic AssuranceVerificationSource assuranceVerificationSource() {

    return new MyAssuranceVerificationSource();}

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

        1. 委托身份验证

CAS 可以充当使用 Pac4j 库的客户端(即服务提供商或代理),并将身份验证委托给:

CAS 服务器

SAML2 身份提供商

OAuth2 提供商,如 Facebook、Twitter、GitHub、Google、LinkedIn 等

OpenID Connect 身份提供商,例如 Google、Apple

ADFS

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

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下一页

 注意

发出身份验证请求的客户端可以是任何类型(SAML、OAuth2、OpenID Connect 等),并且允许使用 CAS 服务器支持并配置为理解的任何协议提交身份验证请求。这意味着您可能有一个 OAuth2 客户端在委派模式下使用 CAS 在外部 SAML2 身份提供商、另一个 CAS 服务器或 Facebook 上进行身份验证,并在该流的末尾接收 OAuth2 用户配置文件。CAS 服务器能够充当代理,在中间执行协议转换。

身份提供商注册

请参阅本指南。

配置文件属性

在受 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" ] ]

  }}

发现选择

请参阅本指南。

身份验证策略

请参阅本指南。

供应

请参阅本指南。

后处理

请参阅本指南。

网络流

委托身份验证的 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下一页

故障排除

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

1

2

3

4

5

6

...<Logger name="org.pac4j" level="debug" additivity="false">

    <AppenderRef ref="casConsole"/>

    <AppenderRef ref="casFile"/></Logger>

...

      1.  Delegation
        1. 委托身份验证

CAS 可以充当使用 Pac4j 库的客户端(即服务提供商或代理),并将身份验证委托给:

CAS 服务器

SAML2 身份提供商

OAuth2 提供商,如 Facebook、Twitter、GitHub、Google、LinkedIn 等

OpenID Connect 身份提供商,例如 Google、Apple

ADFS

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

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下一页

 注意

发出身份验证请求的客户端可以是任何类型(SAML、OAuth2、OpenID Connect 等),并且允许使用 CAS 服务器支持并配置为理解的任何协议提交身份验证请求。这意味着您可能有一个 OAuth2 客户端在委派模式下使用 CAS 在外部 SAML2 身份提供商、另一个 CAS 服务器或 Facebook 上进行身份验证,并在该流的末尾接收 OAuth2 用户配置文件。CAS 服务器能够充当代理,在中间执行协议转换。

        1. 身份提供商注册

请参阅本指南。

        1. 配置文件属性

在受 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. 供应

请参阅本指南。

        1. 后处理

请参阅本指南。

        1. 网络流

委托身份验证的 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. 故障排除

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

1

2

3

4

5

6

...<Logger name="org.pac4j" level="debug" additivity="false">

    <AppenderRef ref="casConsole"/>

    <AppenderRef ref="casFile"/></Logger>

...

    1. WS 联合身份验证
      1. 身份供应商
        1. 概述
          1. S 联合协议

CAS 可以充当独立的身份提供程序,提供对 WS 联合身份验证被动请求者配置文件的支持。核心功能构建在 Apache Fediz 之上,其架构如下所述。

 记得

此处介绍的功能允许 CAS 充当标识提供者以支持 WS 联合身份验证协议。如果您希望执行相反的操作,并将身份验证移交给支持 WS 联合身份验证的外部身份提供程序,则可以将委派作为一个集成选项。

          1. 安全令牌服务

WS-Trust OASIS 标准指定了一个名为 Security Token Service 的运行时组件。服务使用者从 STS 请求安全令牌,该令牌将发送给服务提供商。服务提供商可以自行验证安全令牌,也可以向 STS 发送请求进行验证。此模式基于服务提供商与 STS 之间的间接信任关系,而不是服务提供商和服务使用者之间的直接信任。只要服务使用者拥有受信任的 STS 颁发的安全令牌,服务提供商就会接受此安全令牌。

STS 的一个主要优点是降低了应用程序的复杂性。Web 服务使用者不必知道如何创建其服务提供商所需的各种类型的安全令牌。相反,它会向 STS 发送一个请求,其中包含客户端和服务提供商的要求,并将返回的安全令牌附加到服务提供商的传出 SOAP 消息。

通过在 WAR 覆盖中包含以下依赖项来启用支持:

Apache Maven

Gradle

BOM - Spring

BOM - Gradle

资源

1

implementation "org.apereo.cas:cas-server-support-ws-sts:${project.'cas.version'}"

 YAGNI

您无需在配置和覆盖中显式包含此组件。这只是为了告诉你它的存在。声明身份提供商后,将自动提取安全令牌服务。仅当您需要编译时访问其中的组件时,才将此模块包含在 overlay 中。

            1. 端点

端点

描述

/ws/sts

显示配置中定义的每个 REALM 的可用 SOAP 服务及其 WSDL 配置的列表。

            1. 证券令牌

颁发的安全令牌被视为 CAS 票证,存储在票证注册表中的前缀 STS 下,并且在持久性、复制等方面遵循与所有其他票证类型相同的语义。这些令牌与票证授予票证的生命周期密切相关,并与其过期策略匹配。令牌本身在有效的票证授予票证之外没有生命周期,并且不支持票证生命周期配置。

          1. WS 联合身份提供程序

STS 的安全模型建立在 WS-Security 和 WS-Trust 建立的基础之上。Web 浏览器的主要问题是没有直接发送 Web 服务 (SOAP) 请求的简单方法。因此,必须在基本 HTTP 1.1 功能(GET、POST重定向和 Cookie)的范围内执行处理,并尽可能符合用于令牌获取的 WS-Trust 协议。IdP 负责将浏览器的登录请求转换为 STS 的 SOAP 请求,以及 STS 对浏览器登录响应的响应。此外,浏览器用户必须使用 IdP 进行身份验证。

通过在 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-ws-idp"}

            1. 端点

端点

描述

/ws/idp/metadata

根据身份提供程序的配置领域显示当前联合元数据。

/ws/idp/federation

用于接收来自客户端(通常标识为issuer)的初始 GET 身份验证请求的终端节点。

          1. 领域

此时,默认情况下,安全令牌服务的终端节点使用单个领域配置运行,而身份提供商配置只能识别和请求单个领域的令牌。虽然目前还没有对多个领域的支持,但一般来说,底层配置应该允许该功能存在于以后的版本中。CAS 识别的默认领域设置为 urn:org:apereo:cas:ws:idp:realm-CAS客户端注册需要确保此值匹配。

          1. 客户

请参阅本指南。

          1. 索赔

请参阅本指南。

          1. 令牌类型

CAS 支持以下令牌类型:

类型

http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1

http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV2.0

urn:ietf:params:oauth:token-type:jwt

http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512/sct

令牌类型可以按服务进行配置:

1

2

3

4

5

6

7

8

{

  "@class" : "org.apereo.cas.ws.idp.services.WSFederationRegisteredService",

  "serviceId" : "https://wsfed.example.org/.+",

  "realm" : "urn:wsfed:example:org:sampleapplication",

  "name" : "WSFED",

  "id" : 1,

  "tokenType": "http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1"}

          1. 配置

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

必填

自选

签名和加密

笔记

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

Show  entries

搜索:

·  cas.authn.wsfed-idp.idp.realm-name=CAS

Realm 名称。

 org.apereo.cas.configuration.model.support.wsfed.WsFederationIdentityProviderProperties.

如何配置此属性?

·  cas.authn.wsfed-idp.idp.realm=urn:org:apereo:cas:ws:idp:realm-CAS

此时,默认情况下,安全令牌服务的终端节点使用单个领域配置运行,而身份提供商配置只能识别和请求单个领域的令牌。客户端注册需要确保此值匹配。

 org.apereo.cas.configuration.model.support.wsfed.WsFederationIdentityProviderProperties.

如何配置此属性?

·  cas.authn.wsfed-idp.sts.crypto.encryption.key=

加密密钥是一个 JWT,其长度由加密密钥大小设置定义。

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

 org.apereo.cas.configuration.model.core.util.EncryptionJwtCryptoProperties.

如何配置此属性?

·  cas.authn.wsfed-idp.sts.crypto.signing.key=

签名密钥是一个 JWT,其长度由签名密钥大小设置定义。

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

 org.apereo.cas.configuration.model.core.util.SigningJwtCryptoProperties.

如何配置此属性?

·  cas.authn.wsfed-idp.sts.realm.issuer=CAS

标识并向 STS 注册的领域的颁发者/名称。

 org.apereo.cas.configuration.model.support.wsfed.WsFederationSecurityTokenServiceRealmProperties.

如何配置此属性?

显示 1 到 5 的 8 个条目

上一页12下一页

您可能还需要在 CAS 覆盖中声明以下存储库才能解析依赖项:

1

2

3

4

5

6

repositories {

    maven {

        mavenContent { releasesOnly() }

        url "https://build.shibboleth.net/maven/releases/"

    }}

          1. 故障排除

要启用其他日志记录,请修改日志记录配置文件以添加以下内容:

1

2

3

4

<Logger name="org.apache.cxf" level="debug" additivity="false">

    <AppenderRef ref="casConsole"/>

    <AppenderRef ref="casFile"/></Logger>

        1. 客户
          1. 客户端 - WS 联合协议

客户端和依赖方可以按如下方式向 CAS 注册:

1

2

3

4

5

6

{

  "@class" : "org.apereo.cas.ws.idp.services.WSFederationRegisteredService",

  "serviceId" : "https://wsfed.example.org/.+",

  "name" : "Sample WsFed Application",

  "id" : 100}

描述

serviceId

回调/使用者 URL,令牌可以 POSTed,通常与 wreply 参数匹配。

realm

应用程序的领域标识符,通过 wtrealm 参数标识。这需要与为身份提供商定义的领域匹配。默认情况下,它设置为为 CAS 身份提供商定义的领域。

appliesTo

控制安全令牌的应用对象。默认为 realm。

服务定义可由服务管理工具管理。

        1. 索赔
          1. 声明 - WS 联合协议

属性筛选和发布策略是按信赖方定义的。有关更多信息,请参阅本指南。

CAS 支持以下标准声明进行发布:

索赔

描述

EMAIL_ADDRESS_2005

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress

EMAIL_ADDRESS

http://schemas.xmlsoap.org/claims/EmailAddress

GIVEN_NAME

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname

NAME

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name

USER_PRINCIPAL_NAME_2005

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn

USER_PRINCIPAL_NAME

http://schemas.xmlsoap.org/claims/UPN

COMMON_NAME

http://schemas.xmlsoap.org/claims/CommonName

GROUP

http://schemas.xmlsoap.org/claims/Group

MS_ROLE

http://schemas.microsoft.com/ws/2008/06/identity/claims/role

ROLE

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/role

SURNAME

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname

PRIVATE_ID

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/privatepersonalidentifier

NAME_IDENTIFIER

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier

AUTHENTICATION_METHOD

http://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod

DENY_ONLY_GROUP_SID

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/denyonlysid

DENY_ONLY_PRIMARY_SID

http://schemas.microsoft.com/ws/2008/06/identity/claims/denyonlyprimarysid

DENY_ONLY_PRIMARY_GROUP_SID

http://schemas.microsoft.com/ws/2008/06/identity/claims/denyonlyprimarygroupsid

GROUP_SID

http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid

PRIMARY_GROUP_SID

http://schemas.microsoft.com/ws/2008/06/identity/claims/primarygroupsid

PRIMARY_SID

http://schemas.microsoft.com/ws/2008/06/identity/claims/primarysid

WINDOWS_ACCOUNT_NAME

http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname

PUID

http://schemas.xmlsoap.org/claims/PUID

分配给信赖方和服务的属性发布策略能够链接给定的标准声明并将其映射到应该已经可用的属性。配置如下所示:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

{

  "@class" : "org.apereo.cas.ws.idp.services.WSFederationRegisteredService",

  "serviceId" : "https://wsfed.example.org/.+",

  "realm" : "urn:wsfed:example:org:sampleapplication",

  "name" : "WSFED",

  "id" : 1,

  "attributeReleasePolicy" : {

    "@class" : "org.apereo.cas.ws.idp.services.WSFederationClaimsReleasePolicy",

    "allowedAttributes" : {

      "@class" : "java.util.TreeMap",

      "GIVEN_NAME" : "givenName"

    }

  }}

上述代码段允许 CAS 释放声明 http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname 其值由已为已验证的主体检索的 givenName 属性的值标识。

此策略授权和允许发布的属性不一定作为解析的主体属性提供,并且可以使用属性定义存储动态解析。

          1. 内联 Groovy 声明

声明可以从内联 Groovy 脚本生成其值。例如,声明EMAIL_ADDRESS_2005可以构造为动态属性,其值由内联 Groovy 脚本属性和 cn 属性确定:

1

2

3

4

5

6

7

8

9

10

11

12

13

{

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

  "serviceId" : "sample",

  "name" : "sample",

  "id" : 300,

  "attributeReleasePolicy" : {

    "@class" : "org.apereo.cas.ws.idp.services.WSFederationClaimsReleasePolicy",

    "allowedAttributes" : {

      "@class" : "java.util.TreeMap",

      "EMAIL_ADDRESS_2005" : "groovy { return attributes['cn'].get(0) + '@example.org' }"

    }

  }}

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

          1. 基于文件的 Groovy 声明

声明可以从外部 Groovy 脚本生成其值。例如,声明EMAIL_ADDRESS_2005可以构造为动态属性,其值由 Groovy 脚本属性和 cn 属性确定:

1

2

3

4

5

6

7

8

9

10

11

12

13

{

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

  "serviceId" : "sample",

  "name" : "sample",

  "id" : 300,

  "attributeReleasePolicy" : {

    "@class" : "org.apereo.cas.ws.idp.services.WSFederationClaimsReleasePolicy",

    "allowedAttributes" : {

      "@class" : "java.util.TreeMap",

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

    }

  }}

此组件的配置有资格使用 Spring 表达式语言语法。脚本本身可能具有以下轮廓:

1

2

3

4

5

6

def run(final Object... args) {

    def (attributes,logger) = args

    logger.info "Attributes currently resolved: ${attributes}"

    return [attributes["cn"][0] + "@example.org"]}

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

          1. 自定义声明

您还可以决定将非标准声明作为自定义命名空间的一部分发布。例如,以下代码段允许 CAS 释放声明 https://github.com/apereo/cas/employeeNumber 其值由已为经过身份验证的主体检索的 personSecurityId 属性的值标识。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

{

  "@class" : "org.apereo.cas.ws.idp.services.WSFederationRegisteredService",

  "serviceId" : "https://wsfed.example.org/.+",

  "realm" : "urn:wsfed:example:org:sampleapplication",

  "name" : "WSFED",

  "id" : 1,

  "attributeReleasePolicy" : {

    "@class" : "org.apereo.cas.ws.idp.services.CustomNamespaceWSFederationClaimsReleasePolicy",

    "namespace": "https://github.com/apereo/cas",

    "allowedAttributes" : {

      "@class" : "java.util.TreeMap",

      "employeeNumber" : "personSecurityId"

    }

  }}

此策略授权和允许发布的属性不一定作为解析的主体属性提供,并且可以使用属性定义存储动态解析。

      1.  Delegation
        1. 概述

CAS 服务器和 ADFS 之间的集成将用户身份验证从 CAS 服务器委托给 ADFS,从而使 CAS 服务器成为 WS 联合身份验证客户端。从 ADFS 发布的声明将作为 CAS 服务器的属性提供,并扩展到 CAS 客户端。

 记得

此处描述的功能允许 CAS 将 ADFS 用作外部身份提供程序。如果您希望执行相反的操作,允许 ADFS 成为 CAS 客户端并使用 CAS 作为身份提供程序,则可以利用 CAS 中的 SAML2 支持作为一个集成选项。

通过在 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-wsfederation-webflow"}

您可能还需要在 CAS 覆盖中声明以下存储库,以便能够解析依赖项:

1

2

3

4

5

6

repositories {

    maven {

        mavenContent { releasesOnly() }

        url "https://build.shibboleth.net/maven/releases/"

    }}

 JCE 要求

确保在 CAS 使用的 Java 环境中安装了正确的 JCE 捆绑包是安全的,尤其是在您需要使用 ADFS 颁发的加密负载时。请务必为您的 Java 版本选择正确的 JCE 版本。可以通过 java -version 命令检测 Java 版本。

        1. WsFed 配置

调整并提供 ADFS 实例的设置,并确保您已获取 ADFS 签名证书,并在运行时可以解析的位置将其提供给 CAS。

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

必填

自选

签名和加密

Groovy 脚本

主体转换

笔记

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

Show  entries

搜索:

·  cas.authn.wsfed[0].attribute-mutator-script.location=

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

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

如何配置此属性?

·  cas.authn.wsfed[0].cookie.crypto.encryption.key=

加密密钥是一个 JWT,其长度由加密密钥大小设置定义。

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

 org.apereo.cas.configuration.model.core.util.EncryptionJwtCryptoProperties.

如何配置此属性?

·  cas.authn.wsfed[0].cookie.crypto.signing.key=

签名密钥是一个 JWT,其长度由签名密钥大小设置定义。

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

 org.apereo.cas.configuration.model.core.util.SigningJwtCryptoProperties.

如何配置此属性?

·  cas.authn.wsfed[0].id=

此 wsfed 配置的内部标识符。如果未定义,则标识符将由 CAS 本身自动生成。如果在 clustereddeployment 中定义了多个 CAS 服务器,则必须在配置中静态定义此标识符。

 org.apereo.cas.configuration.model.support.wsfed.WsFederationDelegationProperties.

如何配置此属性?

·  cas.authn.wsfed[0].identity-attribute=upn

从断言中提取并用于构建 CAS 委托人 ID 的属性。

 org.apereo.cas.configuration.model.support.wsfed.WsFederationDelegationProperties.

如何配置此属性?

显示 1 到 5 的 10 个条目

上一页12下一页

        1. 签名断言

CAS 能够使用通过 CAS 设置定义的专用证书文件来确定断言签名的有效性。证书文件和资源可以静态定义为可供 CAS 加载和使用的文件系统资源,或者签名资源可以指向 ADFS 联合元数据(作为 URL 或 XML 文件)。使用联合元数据时,签名证书是从标记为签名的 IDPSSODescriptor 密钥描述符中提取的。

        1. 加密断言

CAS 能够自动解密 ADFS 颁发的 SAML 断言。为此,您首先需要生成一个私有/公共密钥对:

1

2

3

4

5

6

7

openssl genrsa -out private.key 1024

openssl rsa -pubout -in private.key -out public.key -inform PEM -outform DER

openssl pkcs8 -topk8 -inform PEM -outform DER -nocrypt -in private.key -out private.p8

openssl req -new -x509 -key private.key -out x509.pem -days 365

# convert the X509 certificate to DER format

openssl x509 -outform der -in x509.pem -out certificate.crt

配置 CAS 以引用密钥对,并在 ADFS 中配置信赖方信任设置以使用 certificate.crt 文件进行加密。

        1. 修改 ADFS 声明

WsFed 配置可以选择允许您操作来自 ADFS 的声明,但在将其插入 CAS 用户主体之前。属性的操作是使用属性 mutator 进行的,其中其逻辑可以在 Groovy 脚本中实现,并且通过设置将 path教给 CAS。

该脚本可以采用以下形式:

1

2

3

4

5

6

7

8

9

import org.apereo.cas.*import java.util.*import org.apereo.cas.authentication.*

Map run(final Object... args) {

    def (attributes,logger) = args

    logger.warn("Mutating attributes {}", attributes)

    return [upn: ["CASUser"]]}

传递给脚本的参数如下:

参数

描述

attributes

ADFS 提供的属性的当前 Map。

logger

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

请注意,脚本的执行结果必须确保将属性收集到 Map中,其中属性名称(键)是简单的 String,并且属性值将转换为集合。

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

        1. 处理 CAS 注销

1

<a href="https://adfs.example.org/adfs/ls/?wa=wsignout1.0">Logout</a>

可选步骤是 casLogoutView.html 可以修改以放置指向 ADFS 注销页面的链接。

或者,您可以指示 CAS 在执行注销操作后重定向到上述端点。

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

自选

笔记

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

Show  entries

搜索:

·  cas.logout.confirm-logout=false

注销之前,允许在 Web 界面上确认选项。

 org.apereo.cas.configuration.model.core.logout.LogoutProperties.

如何配置此属性?

·  cas.logout.follow-service-redirects=false

是否应允许 CAS 在注销后重定向到备用位置。

 org.apereo.cas.configuration.model.core.logout.LogoutProperties.

如何配置此属性?

·  cas.logout.redirect-parameter=

在此处,将指示 CAS 在注销后应重定向到的目标目标,并按您选择的参数名称提取。如果未指定,则默认值将用作 service。

 org.apereo.cas.configuration.model.core.logout.LogoutProperties.

如何配置此属性?

·  cas.logout.redirect-url=

CAS 必须在所有注销操作完成后立即重定向到的 URL。在 CAS 充当代理并需要重定向到外部身份提供商的注销端点以删除会话等情况下,通常很有用。

 org.apereo.cas.configuration.model.core.logout.LogoutProperties.

如何配置此属性?

显示 1 到 4 的 4 个条目

上一页1下一页

        1. 每服务信赖方 ID

要为每个服务定义指定信赖方标识符,请调整 serviceregistry 以匹配以下内容:

1

2

3

4

5

6

7

8

9

10

11

12

13

{

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

  "serviceId" : "^https://.+",

  "name" : "sample service",

  "id" : 100,

  "properties" : {

    "@class" : "java.util.HashMap",

    "wsfed.relyingPartyIdentifier" : {

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

      "values" : [ "java.util.HashSet", [ "custom-identifier" ] ]

    }

  }}

CAS 为各种模块和功能提供并识别以下属性:

Show  entries

搜索:

名字

默认值

类型

wsfed.relyingPartyIdentifier

STRING

DELEGATED_AUTHN_WSFED

显示 1 到 1 的 1 个条目

上一页1下一页

        1. 故障排除

请注意 CAS 和 ADFS 服务器之间的时钟漂移问题。响应的验证失败确实会显示在日志中,并且请求会再次路由回 ADFS,从而导致重定向循环。

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

1

2

3

4

5

6

...<Logger name="org.apereo.cas.support.wsfederation" level="debug" additivity="false">

    <AppenderRef ref="casConsole"/>

    <AppenderRef ref="casFile"/></Logger>

...

    1. SAML
      1. SAML1
        1. SAML v1.1 协议

CAS 支持标准化 SAML 1.1 协议的主要目的是:

支持一种属性发布的方法。

单点注销。

SAML 1.1 票证验证响应是通过在 /samlValidate URI 处通过 POST 验证票证来获取的。

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

        1. 应用

向 CAS 注册 SAML v1.1 应用程序与任何其他 CAS 应用程序类似:

1

2

3

4

5

6

7

{

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

  "serviceId" : "^https://app.example.org.+",

  "name" : "App",

  "id" : 1,

  "supportedProtocols": [ "java.util.HashSet", [ "SAML1" ] ]}

请注意,CAS 中没有专用的 SAML v1.1 应用程序单独应用程序类型。如示例所示,您应该使用 CasRegisteredService 类型向 CAS 注册 SAML v1.1 应用程序。

        1. 执行器端点

CAS 提供以下端点:

  POST

/cas/actuator/samlValidate 

处理验证请求并生成 saml1 有效负载。

        1. 样品请求

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

POST /cas/samlValidate?ticket=

Host: cas.example.com

Content-Length: 491

Content-Type: text/xml

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">

  <SOAP-ENV:Header/>

  <SOAP-ENV:Body>

    <samlp:Request xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol" MajorVersion="1"

      MinorVersion="1" RequestID="_192.168.16.51.1024506224022"

      IssueInstant="2002-06-19T17:03:44.022Z">

      <samlp:AssertionArtifact>

        ST-1-u4hrm3td92cLxpCvrjylcas.example.com

      </samlp:AssertionArtifact>

    </samlp:Request>

  </SOAP-ENV:Body></SOAP-ENV:Envelope>

        1. 示例响应

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

<?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">

  <SOAP-ENV:Body>

    <saml1p:Response xmlns:saml1p="urn:oasis:names:tc:SAML:1.0:protocol" InResponseTo="...." IssueInstant="2017-08-15T06:30:04.622Z" MajorVersion="1" MinorVersion="1" ResponseID="_bf6957bad275fc74a1c079a445581441">

      <saml1p:Status>

        <saml1p:StatusCode Value="saml1p:Success" />

      </saml1p:Status>

      <saml1:Assertion xmlns:saml1="urn:oasis:names:tc:SAML:1.0:assertion" AssertionID="_d9673d8af414cc9612929480b58cb2a1" IssueInstant="2017-08-15T06:30:04.622Z" Issuer="testIssuer" MajorVersion="1" MinorVersion="1">

        <saml1:Conditions NotBefore="2017-08-15T06:30:04.622Z" NotOnOrAfter="2017-08-15T06:30:05.622Z">

          <saml1:AudienceRestrictionCondition>

            <saml1:Audience>https://google.com</saml1:Audience>

          </saml1:AudienceRestrictionCondition>

        </saml1:Conditions>

        <saml1:AuthenticationStatement AuthenticationInstant="2017-08-15T06:46:43.585Z" AuthenticationMethod="urn:ietf:rfc:2246">

          <saml1:Subject>

            <saml1:NameIdentifier>testPrincipal</saml1:NameIdentifier>

            <saml1:SubjectConfirmation>

              <saml1:ConfirmationMethod>urn:oasis:names:tc:SAML:1.0:cm:artifact</saml1:ConfirmationMethod>

            </saml1:SubjectConfirmation>

          </saml1:Subject>

        </saml1:AuthenticationStatement>

        <saml1:AttributeStatement>

          <saml1:Subject>

            <saml1:NameIdentifier>testPrincipal</saml1:NameIdentifier>

            <saml1:SubjectConfirmation>

              <saml1:ConfirmationMethod>urn:oasis:names:tc:SAML:1.0:cm:artifact</saml1:ConfirmationMethod>

            </saml1:SubjectConfirmation>

          </saml1:Subject>

          <saml1:Attribute AttributeName="testAttribute" AttributeNamespace="whatever">

            <saml1:AttributeValue>testValue</saml1:AttributeValue>

          </saml1:Attribute>

          <saml1:Attribute AttributeName="samlAuthenticationStatementAuthMethod" AttributeNamespace="whatever">

            <saml1:AttributeValue>urn:ietf:rfc:2246</saml1:AttributeValue>

          </saml1:Attribute>

          <saml1:Attribute AttributeName="testSamlAttribute" AttributeNamespace="whatever">

            <saml1:AttributeValue>value</saml1:AttributeValue>

          </saml1:Attribute>

          <saml1:Attribute AttributeName="testAttributeCollection" AttributeNamespace="whatever">

            <saml1:AttributeValue>tac1</saml1:AttributeValue>

            <saml1:AttributeValue>tac2</saml1:AttributeValue>

          </saml1:Attribute>

        </saml1:AttributeStatement>

      </saml1:Assertion>

    </saml1p:Response>

  </SOAP-ENV:Body></SOAP-ENV:Envelope>

        1. 配置

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

自选

笔记

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

Show  entries

搜索:

·  cas.saml-core.attribute-namespace=http://www.ja-sig.org/products/cas/

生成 SAML1 响应时使用的属性命名空间。

 org.apereo.cas.configuration.model.support.saml.SamlCoreProperties.

如何配置此属性?

·  cas.saml-core.issue-length=PT30S

控制断言有效期的 Issue length。

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

 org.apereo.cas.configuration.model.support.saml.SamlCoreProperties.

如何配置此属性?

·  cas.saml-core.issuer=localhost

生成 SAML1 响应时断言的颁发者。

 org.apereo.cas.configuration.model.support.saml.SamlCoreProperties.

如何配置此属性?

·  cas.saml-core.security-manager=org.apache.xerces.util.SecurityManager

用于创建 SAML 解析器池的安全管理器类的限定名称。

 org.apereo.cas.configuration.model.support.saml.SamlCoreProperties.

如何配置此属性?

·  cas.saml-core.skew-allowance=PT30S

控制身份验证的 issue 实例的 Skew Allowance。

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

 org.apereo.cas.configuration.model.support.saml.SamlCoreProperties.

如何配置此属性?

显示 1 到 5 的 6 个条目

上一页12下一页

您可能还需要在 CAS 覆盖中声明以下存储库才能解析依赖项:

1

2

3

4

5

6

repositories {

    maven {

        mavenContent { releasesOnly() }

        url "https://build.shibboleth.net/maven/releases/"

    }}

      1. SAML2
        1. 概述
          1. SAML2 身份验证

CAS 可以充当 SAML2 身份提供商,接受身份验证请求并生成 SAML 断言。

如果您打算允许 CAS 将身份验证委托给外部 SAML2 身份提供商,则需要查看本指南。

 SAML 规范

本文档仅重点介绍如何在 CAS 中打开 SAML2 支持。它不是为了描述/解释 SAML2 协议本身的众多特性。如果您不确定本页引用的概念,请先查看 SAML2 规范。

          1. 联合互操作评估

CAS 项目努力符合 SAML V2.0 联合互操作性实现配置文件。此处提供了针对当前 CAS 版本的要求的评估。建议您查看、评估和评论当前不存在或标记为有问题的功能(在需要验证的地方)。

          1. SAML 端点

以下 CAS 终端节点响应支持的 SAML2 配置文件:

/idp/error

/idp/profile/SAML2/Redirect/SSO

/idp/profile/SAML2/POST/SSO

/idp/profile/SAML2/POST-SimpleSign/SSO

/idp/profile/SAML2/Unsolicited/SSO

/idp/profile/SAML2/SOAP/ECP

/idp/profile/SAML2/SOAP/AttributeQuery

/idp/profile/SAML1/SOAP/ArtifactResolution

          1. 元数据管理

可以通过多种方式处理和存储 SAML2 身份提供商或服务提供商元数据。要了解更多信息,请查看本指南。

          1. 配置

通过在 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-saml-idp"}

您可能还需要在 CAS 覆盖中声明以下存储库,以便能够解析依赖项:

1

2

3

4

5

6

repositories {

    maven {

        mavenContent { releasesOnly() }

        url "https://build.shibboleth.net/maven/releases/"

    }}

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

必填

自选

签名和加密

笔记

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

Show  entries

搜索:

·  cas.authn.saml-idp.core.entity-id=https://cas.example.org/idp

部署的 SAML 实体 ID。

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

 org.apereo.cas.configuration.model.support.saml.idp.SamlIdPCoreProperties.

如何配置此属性?

·  cas.authn.saml-idp.core.session-replication.cookie.crypto.encryption.key=

加密密钥是一个 JWT,其长度由加密密钥大小设置定义。

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

 org.apereo.cas.configuration.model.core.util.EncryptionJwtCryptoProperties.

如何配置此属性?

·  cas.authn.saml-idp.core.session-replication.cookie.crypto.signing.key=

签名密钥是一个 JWT,其长度由签名密钥大小设置定义。

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

 org.apereo.cas.configuration.model.core.util.SigningJwtCryptoProperties.

如何配置此属性?

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

上一页1下一页

            1. 执行器端点

CAS 提供以下端点:

  POST

/cas/actuator/samlPostProfileResponse 

生成 SAML2 响应实体。

  POST

/cas/actuator/samlPostProfileResponse 

            1. SAML 服务

请参阅本指南,了解有关如何配置 SAML2 服务提供商的更多信息。

            1. 安全配置

请参阅本指南以了解有关如何配置 SAML2 安全配置的更多信息。

            1. 注销 & SLO

请参阅本指南,了解有关如何配置 SAML2 注销操作和设置的更多信息。

            1. 属性发布

属性筛选和发布策略是按 SAML 服务定义的。有关更多信息,请参阅本指南。

            1. 名称 ID 选择

请参阅本指南以了解有关如何配置 SAML2 安全配置的更多信息。

          1. 未经请求的 SSO

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

          1. 属性查询

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

          1. 客户端库

对于基于 Java 的应用程序,可以使用以下框架将您的应用程序与充当 SAML2 身份提供商的 CAS 集成:

Spring 安全 SAML

Pac4j 封装

          1. 故障排除

要启用其他日志记录,请修改日志记录配置文件以添加以下内容:

1

2

3

4

5

6

7

8

<Logger name="org.opensaml" level="debug" additivity="false">

    <AppenderRef ref="casConsole"/>

    <AppenderRef ref="casFile"/></Logger><Logger name="PROTOCOL_MESSAGE" level="debug" additivity="false">

    <AppenderRef ref="casConsole"/>

    <AppenderRef ref="casFile"/></Logger>

        1.  Delegation

同上

        1. 服务提供商
          1. 概述
            1. SAML2 服务

SAML 依赖方和服务必须在 CAS 服务注册表中注册,类似于以下示例:

1

2

3

4

5

6

7

8

{

  "@class" : "org.apereo.cas.support.saml.services.SamlRegisteredService",

  "serviceId" : "the-entity-id-of-the-sp",

  "name" : "SAMLService",

  "id" : 10000003,

  "evaluationOrder" : 10,

  "metadataLocation" : "https://url/to/metadata.xml"}

 实体 ID 模式

此处的 serviceId 字段应以适当的正则表达式形式表示 SAML2 服务提供商的实体 ID,以便您在必要时在元数据文件中授权和注册多个 SAML2 服务提供商。请记住,在构建表达式模式时,要转义所有正确的字符。

以下字段可用于 SAML 服务:

描述

metadataLocation

从系统文件、类路径、目录或 URL 资源定义的服务元数据的位置。

metadataProxyLocation

代理终端节点 (https://proxy-address:8901) 用于从 URL 资源获取服务元数据。

metadataSignatureLocation

元数据签名证书/公钥的位置,用于验证必须从系统文件或 Classpath 定义的元数据。如果已定义,将对元数据强制实施 SignatureValidationFilter 验证过滤器。

metadataExpirationDuration

检索并再次解析元数据。默认值为 60 分钟。

requireSignedRoot

是否需要对元数据根元素进行签名。默认值为 true。

signUnsolicitedAuthnRequest

在处理未经请求的 SSO 时,确定是否应强制对身份验证请求进行签名。

signAssertions

是否应签署断言。默认值为 FALSE。接受的值为 TRUEFALSEUNDEFINED。当设置为 UNDEFINED 时,CAS 将遵循 SAML 服务提供商元数据中的 WantAssertionsSigned 标志。

signResponses

是否应签署响应。默认值为 true。

encryptionOptional

尽可能加密(即在 peer 的元数据中找到兼容的密钥)或跳过加密。默认值为 false。

encryptAssertions

是否应加密断言。默认值为 false。

encryptAttributes

是否应加密断言属性。默认值为 false。

encryptableAttributes

指定加密的属性集,取消此集合中不存在的其他属性的资格。默认值(即 *)是在 encryptAttributes 为 true 后加密所有内容。

requiredAuthenticationContextClass

如果已定义,将在最终响应中指定 SAML 身份验证上下文类。如果未定义,则身份验证类将为 urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified 或 urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport,具体取决于 SAML 身份验证请求。该值可以指定为外部 Groovy 脚本的路径。

requiredNameIdFormat

如果已定义,将在最终 SAML 响应中强制使用指示的 Name ID 格式。

skewAllowance

如果已定义,则指示用于扭曲身份验证日期(如 valid-from 和 valid-until 元素等)的秒数。

metadataCriteriaPattern

如果已定义,将强制基于 PredicateFilter 的元数据聚合上的实体 ID 筛选器,以根据有效的正则表达式模式包含/排除特定实体 ID。

metadataCriteriaDirection

如果已定义,将强制 PredicateFilter 在解析的元数据中包含或删除实体。允许的值为 INCLUDEEXCLUDE

metadataCriteriaRoles

如果已定义,将允许定义的元数据角色(即 SPSSODescriptor、IDPSSODescriptor)。默认值为 SPSSODescriptor。

metadataCriteriaRemoveEmptyEntitiesDescriptors

控制是否保留不包含实体描述符的实体描述符。默认值为 true。

metadataCriteriaRemoveRolelessEntityDescriptors

控制是否保留不包含角色的实体描述符。默认值为 true。

attributeNameFormats

定义要在 SAML 响应中编码的给定属性名称的属性名称格式的映射。

attributeFriendlyNames

Map 定义要在 SAML 响应中编码的给定属性名称的属性友好名称。

attributeValueTypes

定义给定属性名称的属性值类型的 Map。

nameIdQualifier

如果已定义,将覆盖所生成主题的名称 ID 的 NameQualifier 属性。使用 none 跳过。

logoutResponseBinding

如果已定义,将覆盖用于为服务提供商准备注销响应的绑定。

logoutResponseEnabled

控制是否应为此 SAML2 服务提供商生成和发送 SAML2 注销响应。

signLogoutResponse

控制是否应对 SAML2 注销响应进行签名。

issuerEntityId

如果已定义,将使用给定的身份提供商实体 ID 覆盖 issue 值。当 CAS 需要维护多个身份提供商实体 ID 时,这可能很有用。

assertionAudiences

要包含在断言中的受众 URL 的逗号分隔列表。将覆盖实体 ID。

subjectLocality

如果已定义,将覆盖 SAML2 身份验证语句的 SubjectLocality 属性。

serviceProviderNameIdQualifier

如果已定义,将覆盖生成的主题名称 ID 的 SPNameQualifier 属性。使用 none 跳过。

skipValidatingAuthnRequest

尤其要跳过验证 SAML2 身份验证请求及其签名。默认值为 false。

skipGeneratingAssertionNameId

断言是否应跳过名称标识符的生成。默认值为 false。

skipGeneratingTransientNameId

是否应跳过临时名称标识符生成。默认值为 false。

isSkipGeneratingResponseInResponseTo

是否应为响应跳过 InResponseTo 元素的生成。默认值为 false。

skipGeneratingSubjectConfirmationInResponseTo

是否应跳过生成 InResponseTo 元素以进行主题确认。默认值为 false。

skipGeneratingSubjectConfirmationNotOnOrAfter

是否应跳过 NotOnOrBefore 元素的生成以进行主题确认。默认值为 false。

skipGeneratingSubjectConfirmationAddress

是否应跳过 Address 元素的生成以进行主题确认。默认值为 false。

skipGeneratingSubjectConfirmationRecipient

是否应跳过生成 Recipient 主题确认元素。默认值为 false。

skipGeneratingSubjectConfirmationNotBefore

是否应跳过 NotBefore 元素的生成以进行主题确认。默认值为 true。

skipGeneratingSubjectConfirmationNameId

是否应跳过生成 NameID 元素以进行主题确认。默认值为 true。

skipGeneratingServiceProviderNameIdQualifier

是否应跳过 SPNameQualifier 元素的生成。默认值为 false。

skipGeneratingAuthenticatingAuthority

是否应跳过 AuthenticatingAuthorities 元素的生成。默认值为 false。

skipGeneratingNameIdQualifier

是否应跳过 NameIdQualifier 元素的生成。默认值为 false。

skipGeneratingSessionNotOnOrAfter

是否应跳过 SessionNotOnOrAfter 元素的生成。默认值为 false。

signingCredentialFingerprint

签名凭证的公有密钥的 SHA-1 摘要,解析为正则表达式,用于在处理多个凭证时进行密钥轮换。

signingCredentialType

可接受的值为 BASIC 和 X509。此设置控制此应用程序的最终 SAML 响应中生成的签名块的类型。后者是默认选项,在 X509Data 块内以 PEM 格式对签名进行编码,而前者根据 DEREncodedKeyValue 块下解析的公钥对签名进行编码。

signingSignatureReferenceDigestMethods

签名签名引用摘要方法(如果有)的集合,以覆盖全局默认值。

signingKeyAlgorithm

Signing key 算法,用于加载私钥时强制用于签名操作。默认值为 RSA。

signingSignatureAlgorithms

用于覆盖全局默认值的签名签名算法(如果有)的集合。

signingSignatureBlackListedAlgorithms

被拒绝的签名签名算法的集合(如果有),以覆盖全局默认值。

signingSignatureWhiteListedAlgorithms

允许的签名签名算法(如果有)的集合,以覆盖全局默认值。

signingSignatureCanonicalizationAlgorithm

签名签名规范化算法(如果有)覆盖全局默认值。

encryptionDataAlgorithms

用于覆盖全局默认值的加密数据算法(如果有)的集合。

encryptionKeyAlgorithms

用于覆盖全局默认值的加密密钥传输算法(如果有)的集合。

encryptionBlackListedAlgorithms

被拒绝的加密算法的集合(如果有),以覆盖全局默认值。

encryptionWhiteListedAlgorithms

允许的加密算法(如果有)的集合,以覆盖全局默认值。

whiteListBlackListPrecedence

Preference 值,指示当白名单和黑名单都非空时应优先。接受的值为 INCLUDE 或 EXCLUDE。默认值为 INCLUDE。

 保留您需要的!

建议您仅保留和维护特定集成所需的属性和设置。没有必要获取所有服务字段的副本,并尝试根据其默认值再次配置它们。虽然您可能希望保留一份副本作为参考,但这种策略最终会导致糟糕的升级,增加中断更改的机会,并导致部署混乱。

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

自选

笔记

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

Show  entries

搜索:

·  cas.authn.saml-idp.services.defaults=

控制属于 SAML 服务定义的字段的默认值初始值。这被定义为一个 map,其中 key 是字段名称(即 signAssertions),value 应该是默认值。如果服务定义显式定义了字段的值,则该值将接管,并且将忽略此处定义的默认值。如果服务定义未为字段定义值,并且未为该字段指定默认值,则直接分配给服务定义正文中字段的默认值将接管。

 org.apereo.cas.configuration.model.support.saml.idp.SamlIdPServicesProperties.

如何配置此属性?

显示 1 到 1 的 1 个条目

上一页1下一页

            1. 服务提供商集成

许多 SAML2 服务提供商集成由 CAS 原生提供。要了解更多信息,请查看本指南。

            1. 服务提供商元数据

SAML2 服务提供商元数据可以通过多种方式注册到 CAS 并由 CAS 进行管理。要了解更多信息,请查看本指南。

          1. 元数据管理
            1. 概述
              1. SAML2 服务提供商元数据

本文档介绍了在 CAS 中注册的 SAML2 服务提供商如何控制其元数据管理的某些方面。

              1. 执行器端点

CAS 提供以下端点:

  GET

/cas/actuator/health 

报告由各种监视器生成的系统的一般运行状况。

  GET

/cas/actuator/health/{path} 

              1. 元数据聚合

CAS 服务从根本上由服务标识符识别和加载,这些标识符通常通过正则表达式教给 CAS。这允许按 url 模式对应用程序和服务进行常见分组(即“属于 example.org 的所有内容都已向 CAS 注册)。对于聚合元数据,CAS 实质上会执行双重授权检查,因为它将首先尝试在其已解析的元数据组件集合中查找实体 ID,然后查看该实体 ID 是否通过分配给该服务定义的模式获得授权。这意味着您可以执行以下几项操作之一:

打开模式以允许元数据中授权的所有内容。

将模式限制为仅在元数据中找到的少数选定实体 ID。这与定义元数据标准以筛选已解析的依赖方和实体 ID 的列表基本相同,不同之处在于,一旦元数据完全加载和解析,它就会在事后完成。

您还可以指示 CAS 在解析时读取元数据本身时,按定义的条件筛选元数据实体。这与强制 patternto match entity id 本质上是一样的,只是它是在 CAS 读取元数据时完成的,因此加载时间得到了改善。

              1. 元数据缓存和解析

服务提供商元数据按需获取和加载每个服务,然后在可配置的持续时间内缓存在全局缓存中。对服务元数据的后续请求将始终首先查阅缓存,如果错过,将通过加载或联系已配置的资源来实际解析元数据。

向 CAS 注册的每个服务提供商定义也可以选择专门指定元数据解析的过期期限,以覆盖默认的全局值。

服务元数据的过期策略使用以下顺序进行控制:

CacheDuration 设置(如果有)。

为使用 CAS 定义的 SAML2 注册服务定义的元数据过期策略和持续时间。

通过 CAS 设置控制的全局元数据过期策略。

  DELETE

/cas/actuator/samlIdPRegisteredServiceMetadataCache 

使用服务 ID 或实体 ID 使 SAML2 元数据缓存失效。服务 ID 可以是已注册的服务数字标识符、其名称或实际服务 ID。如果服务定义指向聚合,您还可以指定实体 ID 以查找该聚合中的服务提供商。如果未指定任何参数,则元数据缓存中的所有条目都将失效。

  GET

/cas/actuator/samlIdPRegisteredServiceMetadataCache 

 元数据缓存

请注意,缓存的状态属于 CAS 服务器节点自己的内存,如果集群中有多个 CAS 服务器节点,则不会分布。在 HA 群集环境中,您需要绕过负载均衡器等才能访问实际的 CAS 服务器节点,然后才能访问缓存。否则,您将面临操作由一个 CAS 服务器管理的元数据缓存并与之交互的风险,其中元数据缓存更改不会被其他 CAS 服务器看到,直到且除非它们自己的缓存条目被强制删除或过期。

              1. 元数据存储

可以使用以下选项将向 CAS 注册的 SAML2 服务提供商配置为显示其元数据。

                1. Default

如果 SAML2 服务提供商能够生成有效的元数据,则可以将元数据注册为 URL 或元数据 XML 文件的路径,或者由相应前缀标记的类路径资源。使用此模型,CAS 将直接从磁盘上发布的 URL 和/或 XML 文件中使用元数据,并且可以根据需要选择允许验证元数据的签名。

元数据位置可以使用 Spring 表达式语言语法。

网址

文件

目录

1

2

3

4

5

6

7

{

  "@class" : "org.apereo.cas.support.saml.services.SamlRegisteredService",

  "serviceId" : "the-entity-id-of-the-sp",

  "name" : "SAMLService",

  "id" : 1,

  "metadataLocation" : "https://url/to/metadata.xml"}

多个位置可以用逗号分隔。如果元数据文件仍被视为有效,则 CAS 可能会尝试重复使用以前在磁盘上下载的备份文件中的元数据。此功能将需要禁用通过 HTTP 强制获取元数据。

 用法

通常,应对 SAML2 元数据进行签名以确保完整性和真实性,尤其是在使用 URL 提供并与参与者共享元数据时。强烈建议参与者和使用者在使用前验证元数据文件上的 XML 签名;否则将严重损害 SAML 部署的安全性。受信任的元数据进程必须验证元数据的 XML 签名。通过受 TLS 保护的 HTTP 连接请求元数据是不够的。

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

自选

笔记

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

Show  entries

搜索:

·  cas.authn.saml-idp.metadata.http.force-metadata-refresh=true

从 URL 源强制下载和获取元数据文件,并忽略元数据的任何缓存副本。

 org.apereo.cas.configuration.model.support.saml.idp.metadata.HttpSamlMetadataProperties.

如何配置此属性?

·  cas.authn.saml-idp.metadata.http.metadata-backup-location=

下载的 SAML 元数据缓存为备份文件的目录位置。如果未定义,则根据指定时磁盘上的元数据位置计算目录。目录位置还应支持并可通过 Spring 表达式语言解析。

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

 org.apereo.cas.configuration.model.support.saml.idp.metadata.HttpSamlMetadataProperties.

如何配置此属性?

显示 1 到 2 的 2 个条目

上一页1下一页

                1. 动态元数据

如果要集成的 SP 不生成 SAML 元数据,则可以使用此服务创建元数据,将其保存在 XML 文件中,然后引用它并将其注册到 SP 的 CAS 中。

或者,您可以利用与 CAS 元数据工件位于同一目录中的独立 saml-sp-metadata.json 文件。此文件的内容可以使用相当宽松的 JSON 语法进行定义,并且可能如下所示:

1

2

3

4

5

6

7

8

{

  "https://example.org/saml": {

    "entityId": "https://example.org/saml",

    "certificate": "MIIDUj...",

    "assertionConsumerServiceUrl": "https://example.org/sso/",

    "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"

  }}

文件中的每个条目都由服务提供商实体 ID 标识,从而允许 CAS 动态查找和构建所需的元数据以恢复身份验证流程。对于那些只为集成提供 URL 和签名证书的服务提供商来说,这可能更容易,从而减轻了您单独创建和管理 XML 元数据文件的负担。

服务提供商在 CAS 服务注册表中注册,如下所示:

1

2

3

4

5

6

7

{

  "@class" : "org.apereo.cas.support.saml.services.SamlRegisteredService",

  "serviceId" : "https://example.org/saml",

  "name" : "SAMLService",

  "id" : 10000003,

  "metadataLocation" : "json://"}

 元数据位置

需要将上述注册记录中的元数据位置指定为 json://,以便向 CAS 发出信号,表明必须从指定的 JSON 文件中获取已注册服务提供商的 SAML 元数据。

                1. 高深

服务提供商元数据也可以使用以下任一策略进行管理。

存储

描述

元数据查询协议

请参阅本指南

HTTP/HTTPS 协议

请参阅本指南

REST

请参阅本指南

Git

请参阅本指南

MongoDb 数据库

请参阅本指南

Redis

请参阅本指南

JPA

请参阅本指南

Groovy

请参阅本指南

亚马逊 S3

请参阅本指南

DynamoDb

请参阅本指南

            1. MDQ
              1. 元数据查询协议 - SAML2 元数据管理

CAS 还支持元数据查询协议(也称为 MDQ),它是一个类似于 REST 的 API,用于请求和接收任意元数据。为了将 CAS SAML 服务配置为从 Metadata 查询服务器检索其元数据,必须将元数据位置配置为指向查询服务器实例。

MDQ 可以使用以下代码段作为示例进行配置:

1

2

3

4

5

6

7

8

{

  "@class" : "org.apereo.cas.support.saml.services.SamlRegisteredService",

  "serviceId" : "the-entity-id-of-the-sp",

  "name" : "SAMLService",

  "id" : 10000003,

  "evaluationOrder" : 10,

  "metadataLocation" : "https://mdq.server.org/entities/{0}"}

…其中 {0} 用作要查询元数据的 entityID 占位符。占位符在运行时动态处理并替换为 CAS。多个位置可以用逗号分隔。

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

自选

笔记

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

Show  entries

搜索:

·  cas.authn.saml-idp.metadata.mdq.basic-authn-password=

元数据实例连接到 MDQ 服务器时的基本身份验证密码。

 org.apereo.cas.configuration.model.support.saml.idp.metadata.MDQSamlMetadataProperties.

如何配置此属性?

·  cas.authn.saml-idp.metadata.mdq.basic-authn-username=

Basic auth username(元数据实例连接到 MDQ 服务器时)。

 org.apereo.cas.configuration.model.support.saml.idp.metadata.MDQSamlMetadataProperties.

如何配置此属性?

·  cas.authn.saml-idp.metadata.mdq.supported-content-type=

元数据实例连接到 MDQ 服务器时支持的内容类型。默认情况下支持 MediaType#TEXT_XML_VALUE。

 org.apereo.cas.configuration.model.support.saml.idp.metadata.MDQSamlMetadataProperties.

如何配置此属性?

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

上一页1下一页

            1. HTTP

HTTP/HTTPS - SAML2 元数据管理

SAML 服务定义的元数据位置可以从 http 或 https URL 下载 SAML2 元数据。多个位置可以用逗号分隔。

1

2

3

4

5

6

7

8

{

  "@class" : "org.apereo.cas.support.saml.services.SamlRegisteredService",

  "serviceId" : "the-entity-id-of-the-sp",

  "name" : "SAMLService",

  "id" : 1,

  "description" : "A Groovy-based metadata resolver",

  "metadataLocation" : "https://sp.example.org/saml2/metadata"}

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

自选

笔记

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

Show  entries

搜索:

·  cas.authn.saml-idp.metadata.http.force-metadata-refresh=true

从 URL 源强制下载和获取元数据文件,并忽略元数据的任何缓存副本。

 org.apereo.cas.configuration.model.support.saml.idp.metadata.HttpSamlMetadataProperties.

如何配置此属性?

·  cas.authn.saml-idp.metadata.http.metadata-backup-location=

下载的 SAML 元数据缓存为备份文件的目录位置。如果未定义,则根据指定时磁盘上的元数据位置计算目录。目录位置还应支持并可通过 Spring 表达式语言解析。

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

 org.apereo.cas.configuration.model.support.saml.idp.metadata.HttpSamlMetadataProperties.

如何配置此属性?

显示 1 到 2 的 2 个条目

上一页1下一页

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

            1. REST
              1. REST - SAML2 元数据管理

与动态元数据查询协议 (MDQ) 类似,SAML 服务提供商元数据也可以使用更传统的 REST 接口来获取。这是一个更简单的选项,不需要部署兼容的 MDQ 服务器,并且可以灵活地使用任何编程语言或框架生成 SP 元数据。

通过在覆盖中包含以下模块来启用支持:

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-saml-idp-metadata-rest"}

使用以下代码片段作为示例从 REST 端点获取元数据:

1

2

3

4

5

6

7

8

{

  "@class" : "org.apereo.cas.support.saml.services.SamlRegisteredService",

  "serviceId" : "the-entity-id-of-the-sp",

  "name" : "SAMLService",

  "id" : 10000003,

  "evaluationOrder" : 10,

  "metadataLocation" : "rest://"}

 元数据位置

需要将上述注册记录中的元数据位置指定为 rest://,以向 CAS 发出信号,表明必须从 CAS 配置中定义的 REST 端点获取已注册服务提供商的 SAML 元数据。

请求将提交到 REST 端点,其中 entityId 作为参数,Content-Type: application/xml 作为标头。如果 HTTP 响应处于 200 - OK 响应状态,则 CAS 希望 HTTP 响应的正文与以下代码段匹配:

1

2

3

4

5

6

{  

   "id":1000,

   "name":"SAML Metadata For Service Provider",

   "value":"...",

   "signature":"..."}

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

必填

自选

签名和加密

笔记

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

Show  entries

搜索:

·  cas.authn.saml-idp.metadata.rest.crypto.encryption.key=

加密密钥是一个 JWT,其长度由加密密钥大小设置定义。

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

 org.apereo.cas.configuration.model.core.util.EncryptionJwtCryptoProperties.

如何配置此属性?

·  cas.authn.saml-idp.metadata.rest.crypto.signing.key=

签名密钥是一个 JWT,其长度由签名密钥大小设置定义。

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

 org.apereo.cas.configuration.model.core.util.SigningJwtCryptoProperties.

如何配置此属性?

·  cas.authn.saml-idp.metadata.rest.url=

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

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

 org.apereo.cas.configuration.model.support.saml.idp.metadata.RestSamlMetadataProperties.

如何配置此属性?

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

上一页1下一页

              1. 身份提供商元数据

属于作为 SAML2 身份提供商的 CAS 的元数据构件也可以通过 REST API 进行管理和存储。元数据、签名和加密密钥等工件将作为请求正文以以下结构传递到外部 APIendpoint:

1

2

3

4

5

6

7

8

{

    "signingCertificate": "...",

    "signingKey": "...",

    "encryptionCertificate": "...",

    "encryptionKey": "...",

    "metadata": "...",

    "appliesTo": "CAS"}

在 CAS 设置中定义的 URL 端点应在以 /idp 结尾的路径上可用,该路径由 CAS 自动添加到 URL 端点上。API 预计将在以下概述的所有操作上生成成功的 200 - OK 响应状态:

方法

描述

GET

响应应生成一个 JSON 文档,其中概述了如上所述的键和元数据。可以传递 appliesTo 参数来指示文档所有者和适用性,其中 CAS 值表示 CAS 服务器是元数据和密钥的全局所有者。

POST

存储元数据和键以完成元数据生成过程。请求正文包含概述元数据和键的 JSON 文档,如上所示。

              1. 每项服务

身份提供商元数据、证书和密钥也可以按服务定义,以覆盖全局默认值。适用于服务定义的元数据文档需要调整 metadatadocument 中的 appliesTo 字段,以使用 [service-name]-[service-numeric-identifier] 格式携带服务定义的名称和数字标识符。

            1. Git
              1. Git - SAML2 元数据管理

元数据文档也可以存储在 Git 存储库中并从中获取。这可能专门用于避免在集群中的 CAS 节点之间复制元数据文件,尤其是在需要处理多个双边 SAML 集成的情况下。元数据文档存储为 XML 文件,其签名证书(可选)应在存储库中同名的 .pem文件中找到。(即 SP.xml 的证书可以在 SP.pem 中找到)。

通过在覆盖中包含以下模块来启用支持:

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-saml-idp-metadata-git"}

然后,必须按如下方式设计 SAML 服务定义,以允许 CAS 从 Git 存储库中获取元数据文档:

1

2

3

4

5

6

7

8

{

  "@class" : "org.apereo.cas.support.saml.services.SamlRegisteredService",

  "serviceId" : "the-entity-id-of-the-sp",

  "name" : "SAMLService",

  "id" : 1,

  "description" : "A Git-based metadata resolver",

  "metadataLocation" : "git://"}

根据上述定义,预期 git 存储库包含一个 SAMLService.xml 文件,该文件也可以选择附带一个 SAMLService.pem 文件。

 元数据位置

需要将上述注册记录中的元数据位置指定为 git://,以向 CAS 发出信号,表明必须从 CAS 配置中定义的 Git 存储库中获取已注册服务提供商的 SAML 元数据。

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

必填

自选

签名和加密

笔记

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

Show  entries

搜索:

·  cas.authn.saml-idp.metadata.git.active-branch=master

要签出和激活的分支默认为 master。

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

 org.apereo.cas.configuration.model.support.saml.idp.metadata.GitSamlMetadataProperties.

如何配置此属性?

·  cas.authn.saml-idp.metadata.git.branches-to-clone=*

如果要克隆存储库,这将允许获取分支的选定列表。列出以逗号分隔的分支名称,或使用 * 克隆所有分支。默认为所有分支。

 org.apereo.cas.configuration.model.support.saml.idp.metadata.GitSamlMetadataProperties.

如何配置此属性?

·  cas.authn.saml-idp.metadata.git.clone-directory.location=

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

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

如何配置此属性?

·  cas.authn.saml-idp.metadata.git.crypto.encryption.key=

加密密钥是一个 JWT,其长度由加密密钥大小设置定义。

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

 org.apereo.cas.configuration.model.core.util.EncryptionJwtCryptoProperties.

如何配置此属性?

·  cas.authn.saml-idp.metadata.git.crypto.signing.key=

签名密钥是一个 JWT,其长度由签名密钥大小设置定义。

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

 org.apereo.cas.configuration.model.core.util.SigningJwtCryptoProperties.

如何配置此属性?

显示 1 到 5 的 7 个条目

上一页12下一页

                1. 重新加载服务提供商元数据

默认情况下,当需要解析和获取元数据时,将从 git 存储库中提取 SAML2 服务提供商元数据。您还可以将 CAS 配置为激活和打开后台作业,以使用后台计划程序定期提取元数据。

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

自选

笔记

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

Show  entries

搜索:

·  cas.authn.saml-idp.metadata.git.schedule.cron-expression=

一个类似 cron 的表达式,扩展了通常的 UN*X 定义,以包括秒、分钟、小时、月日、月和星期几的触发器。例如,0 * * * * MON-FRI 表示工作日每分钟一次(在分钟的顶部 - 第 0 秒),或 0 0 0 * * * 表示每天午夜。* 请注意,定义 cron 表达式时,必须删除 start delay 和 repeat interval 设置并将其设置为空白。

 org.apereo.cas.configuration.model.support.quartz.SchedulingProperties.

如何配置此属性?

·  cas.authn.saml-idp.metadata.git.schedule.cron-time-zone=

将解析 cron 表达式的时区。默认情况下,此属性为空(即将使用调度程序的时区)。

 org.apereo.cas.configuration.model.support.quartz.SchedulingProperties.

如何配置此属性?

·  cas.authn.saml-idp.metadata.git.schedule.enabled-on-host=.*

如果此属性与 CAS 服务器的主机名不匹配,则覆盖 SchedulingProperties#enabled 属性值 true。如果在 statefulset 中部署带有镜像的 CAS,其中所有名称都是可预测的,但很难为不同的服务器使用不同的配置,那么这可能很有用。该值可以是确切的主机名,也可以是将用于匹配主机名的正则表达式。

此设置支持正则表达式模式。[?].

 org.apereo.cas.configuration.model.support.quartz.SchedulingProperties.

如何配置此属性?

·  cas.authn.saml-idp.metadata.git.schedule.enabled=true

是否应启用计划程序来计划作业运行。

 org.apereo.cas.configuration.model.support.quartz.SchedulingProperties.

如何配置此属性?

·  cas.authn.saml-idp.metadata.git.schedule.repeat-interval=PT2M

为数据存储实施重新加载数据的重复间隔的字符串表示形式。这是连续任务执行之间的超时。

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

 org.apereo.cas.configuration.model.support.quartz.SchedulingProperties.

如何配置此属性?

显示 1 到 5 的 6 个条目

上一页12下一页

              1. 身份提供商元数据

属于 CAS 作为 SAML2 身份提供商的元数据对象也可以通过 Git 进行管理和存储。元数据、签名和加密密钥等工件保存在文件系统上存储库内的不同目录位置,并且数据按需推送到 git 存储库或从 git 存储库中提取。

              1. 每项服务

身份提供商元数据、证书和密钥也可以按服务定义,以覆盖全局默认值。适用于服务定义的元数据文档需要调整 metadatadocument 中的 appliesTo 字段,该字段用于构造元数据工件的目录路径。

            1. MongoDb 数据库
              1. MongoDb - SAML2 元数据管理

元数据文档也可以存储在 MongoDb 实例中并从 MongoDb 实例中获取。 这可能专门用于避免在集群中的 CAS 节点之间复制元数据文件,尤其是在需要处理多个双边 SAML 集成的情况下。元数据文档存储在单个预定义集合中并从中获取,该集合通过设置教给 CAS。 文档大纲如下:

描述

id

记录的标识符。

name

索引字段,用于简要描述和命名元数据。

value

表示服务提供商元数据的 XML 文档。

signature

用于验证元数据的签名证书的内容(如果有)。

通过在覆盖中包含以下模块来启用支持:

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-saml-idp-metadata-mongo"}

然后,必须按如下方式设计 SAML 服务定义,以允许 CAS 从 MongoDb 实例获取元数据文档:

1

2

3

4

5

6

7

8

{

  "@class" : "org.apereo.cas.support.saml.services.SamlRegisteredService",

  "serviceId" : "the-entity-id-of-the-sp",

  "name" : "SAMLService",

  "id" : 10000003,

  "description" : "A MongoDb-based metadata resolver",

  "metadataLocation" : "mongodb://"}

 元数据位置

上述注册记录中的元数据位置需要指定为 mongodb://,以向 CAS 发出信号,表明必须从 CAS 配置中定义的 MongoDb 数据源获取已注册服务提供商的 SAML 元数据。

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

必填

自选

签名和加密

笔记

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

Show  entries

搜索:

·  cas.authn.saml-idp.metadata.mongo.client-uri=

mongodb 实例的连接 URI。这通常采用 mongodb://user:psw@ds135522.somewhere.com:35522/db 的形式。如果未指定,将回退到其他单个设置。如果指定,则接管所有其他设置(如果适用)。

 org.apereo.cas.configuration.model.support.saml.idp.metadata.MongoDbSamlMetadataProperties.

如何配置此属性?

·  cas.authn.saml-idp.metadata.mongo.collection=

要获取和/或创建的 MongoDb 数据库集合名称。

 org.apereo.cas.configuration.model.support.saml.idp.metadata.MongoDbSamlMetadataProperties.

如何配置此属性?

·  cas.authn.saml-idp.metadata.mongo.crypto.encryption.key=

加密密钥是一个 JWT,其长度由加密密钥大小设置定义。

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

 org.apereo.cas.configuration.model.core.util.EncryptionJwtCryptoProperties.

如何配置此属性?

·  cas.authn.saml-idp.metadata.mongo.crypto.signing.key=

签名密钥是一个 JWT,其长度由签名密钥大小设置定义。

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

 org.apereo.cas.configuration.model.core.util.SigningJwtCryptoProperties.

如何配置此属性?

·  cas.authn.saml-idp.metadata.mongo.database-name=

MongoDb 数据库实例名称。

 org.apereo.cas.configuration.model.support.saml.idp.metadata.MongoDbSamlMetadataProperties.

如何配置此属性?

显示 1 到 5 的 9 个条目

上一页12下一页

              1. 身份提供商元数据

属于 CAS 作为 SAML2 身份提供程序的元数据构件也可以通过 MongoDb 进行管理和存储。元数据、签名和加密密钥等工件保存在通过设置教给 CAS 的 MongoDbcollection 中,作为具有以下结构的单个文档:

1

2

3

4

5

6

7

8

{

    "signingCertificate": "...",

    "signingKey": "...",

    "encryptionCertificate": "...",

    "encryptionKey": "...",

    "metadata": "...",

    "appliesTo": "CAS"}

              1. 每项服务

身份提供商元数据、证书和密钥也可以按服务定义,以覆盖全局默认值。适用于服务定义的元数据文档需要调整 metadatadocument 中的 appliesTo 字段,以使用 [service-name]-[service-numeric-identifier] 格式携带服务定义的名称和数字标识符。

            1. Redis
              1. Redis - SAML2 元数据管理

元数据文档也可以存储在 Redis 实例中并从 Redis 实例中获取。 这可能专门用于避免在集群中的 CAS 节点之间复制元数据文件,尤其是在需要处理多个双边 SAML 集成的情况下。

通过在覆盖中包含以下模块来启用支持:

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-saml-idp-metadata-redis"}

然后,必须按如下方式设计 SAML 服务定义,以允许 CAS 从 MongoDb 实例获取元数据文档:

1

2

3

4

5

6

7

8

{

  "@class" : "org.apereo.cas.support.saml.services.SamlRegisteredService",

  "serviceId" : "the-entity-id-of-the-sp",

  "name" : "SAMLService",

  "id" : 10000003,

  "description" : "A Redis-based metadata resolver",

  "metadataLocation" : "redis://"}

 元数据位置

需要将上述注册记录中的元数据位置指定为 redis://,以向 CAS 发出信号,表明必须从 CAS 配置中定义的 Redis 数据源获取已注册服务提供商的 SAML 元数据。

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

必填

自选

签名和加密

笔记

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

Show  entries

搜索:

·  cas.authn.saml-idp.metadata.redis.cluster.nodes[0].host=

服务器的主机地址。

 org.apereo.cas.configuration.model.support.redis.RedisClusterNodeProperties.

如何配置此属性?

·  cas.authn.saml-idp.metadata.redis.cluster.nodes[0].port=

服务器的端口号。

 org.apereo.cas.configuration.model.support.redis.RedisClusterNodeProperties.

如何配置此属性?

·  cas.authn.saml-idp.metadata.redis.cluster.nodes[0].replica-of=

设置 master 节点的 id。

 org.apereo.cas.configuration.model.support.redis.RedisClusterNodeProperties.

如何配置此属性?

·  cas.authn.saml-idp.metadata.redis.cluster.nodes[0].type=

指示此节点的类型/角色。接受的值为 MASTER, REPLICA 。

 org.apereo.cas.configuration.model.support.redis.RedisClusterNodeProperties.

如何配置此属性?

·  cas.authn.saml-idp.metadata.redis.cluster.password=

集群连接的密码。

 org.apereo.cas.configuration.model.support.redis.RedisClusterProperties.

如何配置此属性?

显示 1 到 5 的 16 个条目

上一页1234下一页

              1. 身份提供商元数据

属于 CAS 作为 SAML2 身份提供商的元数据对象也可以通过 Redis 进行管理和存储。

              1. 每项服务

身份提供商元数据、证书和密钥也可以按服务定义,以覆盖全局默认值。适用于服务定义的元数据文档需要调整 metadatadocument 中的 appliesTo 字段,以使用 [service-name]-[service-numeric-identifier] 格式携带服务定义的名称和数字标识符。

            1. JPA
              1. JPA - SAML2 元数据管理

元数据文档也可以存储在关系数据库实例中并从中获取。这可能专门用于避免在集群中的 CAS 节点之间复制元数据文件,尤其是在需要处理多个双边 SAML 集成的情况下。元数据文档存储在单个预定义表(即 SamlMetadataDocument)中并从中获取,该表的连接信息通过设置教给 CAS 并自动生成。表格的轮廓如下:

描述

id

记录的标识符。

name

索引字段,用于简要描述和命名元数据。

value

表示服务提供商元数据的 XML 文档。

signature

用于验证元数据的签名证书的内容(如果有)。

通过在覆盖中包含以下模块来启用支持:

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-saml-idp-metadata-jpa"}

然后,必须按如下方式设计 SAML 服务定义,以允许 CAS 从数据库实例中获取元数据文档:

1

2

3

4

5

6

7

8

{

  "@class" : "org.apereo.cas.support.saml.services.SamlRegisteredService",

  "serviceId" : "the-entity-id-of-the-sp",

  "name" : "SAMLService",

  "id" : 10000003,

  "description" : "A relational-db-based metadata resolver",

  "metadataLocation" : "jdbc://"}

 元数据位置

需要将上述注册记录中的元数据位置指定为 jdbc://,以向 CAS 发出信号,表明必须从 CAS 配置中定义的 JDBC 数据源获取已注册服务提供商的 SAML 元数据。

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

必填

自选

签名和加密

Hibernate 和 JDBC

笔记

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

Show  entries

搜索:

·  cas.authn.saml-idp.metadata.jpa.crypto.encryption.key=

加密密钥是一个 JWT,其长度由加密密钥大小设置定义。

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

 org.apereo.cas.configuration.model.core.util.EncryptionJwtCryptoProperties.

如何配置此属性?

·  cas.authn.saml-idp.metadata.jpa.crypto.signing.key=

签名密钥是一个 JWT,其长度由签名密钥大小设置定义。

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

 org.apereo.cas.configuration.model.core.util.SigningJwtCryptoProperties.

如何配置此属性?

·  cas.authn.saml-idp.metadata.jpa.driver-class=org.hsqldb.jdbcDriver

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

 org.apereo.cas.configuration.model.support.saml.idp.metadata.JpaSamlMetadataProperties.

如何配置此属性?

·  cas.authn.saml-idp.metadata.jpa.password=

数据库连接密码。

 org.apereo.cas.configuration.model.support.saml.idp.metadata.JpaSamlMetadataProperties.

如何配置此属性?

·  cas.authn.saml-idp.metadata.jpa.url=jdbc:hsqldb:mem:cas-hsql-database

数据库连接 URL。

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

 org.apereo.cas.configuration.model.support.saml.idp.metadata.JpaSamlMetadataProperties.

如何配置此属性?

显示 1 到 5 的 6 个条目

上一页12下一页

              1. 身份提供商元数据

属于作为 SAML2 身份提供商的 CAS 的元数据构件也可以通过 JPA 进行管理和存储。元数据、签名和加密密钥等工件保存在具有以下结构的数据库表中:

描述

id

记录的标识符。

signingCertificate

签名证书。

signingKey

签名密钥。

encryptionCertificate

加密证书。

encryptionKey

加密密钥。

metadata

SAML2 身份提供商元数据。

appliesTo

SAML2 身份提供商元数据(即 CAS的所有者。

              1. 每项服务

身份提供商元数据、证书和密钥也可以按服务定义,以覆盖全局默认值。适用于服务定义的元数据文档需要调整 metadatadocument 中的 appliesTo 列,以使用 [service-name]-[service-numeric-identifier] 格式来携带服务定义的名称和数字标识符。

            1. Groovy
              1. Groovy - SAML2 元数据管理

SAML 服务定义的元数据位置可以指向外部 Groovy 脚本,从而允许该脚本以编程方式确定和构建要添加到现有解析程序集合中的元数据解析机制。

1

2

3

4

5

6

7

8

{

  "@class" : "org.apereo.cas.support.saml.services.SamlRegisteredService",

  "serviceId" : "the-entity-id-of-the-sp",

  "name" : "SAMLService",

  "id" : 10000003,

  "description" : "A Groovy-based metadata resolver",

  "metadataLocation" : "file:/etc/cas/config/groovy-metadata.groovy"}

脚本的大纲可能如下所示:

1

2

3

4

5

6

7

8

9

10

11

12

13

import java.util.*import org.apereo.cas.support.saml.*import org.apereo.cas.support.saml.services.*import org.opensaml.saml.metadata.resolver.*

def run(final Object... args) {

    def (registeredService,samlConfigBean,samlProperties,criteriaSet,logger) = args

    /*

      This is where you build the relevant metadata resolver instance(s).

    */

    def metadataResolver = ...

    return metadataResolver}

传递的参数如下:

参数

描述

registeredService

表示注册表中相应服务定义的对象。

samlConfigBean

表示包含各种生成器和编组程序工厂实例的 OpenSAML 配置类的对象。

samlProperties

负责捕获配置中定义的 CAS SAML IdP 属性的对象。

criteriaSet

负责捕获元数据解决方案条件的对象(如果有)。

logger

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

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

            1. Amazon S3
              1. Amazon S3 - SAML2 元数据管理

元数据文档也可以存储在 Amazon S3 实例中并从 Amazon S3 实例中获取。这可能专门用于避免在集群中的 CAS 节点之间复制元数据文件,尤其是在需要处理多个双边 SAML 集成的情况下。元数据文档存储在单个预定义的存储桶中并从中获取,该存储桶通过设置教给 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-saml-idp-metadata-aws-s3"}

然后,必须按如下方式设计 SAML 服务定义,以允许 CAS 从 Amazon S3 存储桶中获取元数据文档:

1

2

3

4

5

6

7

8

{

  "@class" : "org.apereo.cas.support.saml.services.SamlRegisteredService",

  "serviceId" : "the-entity-id-of-the-sp(s)",

  "name" : "SAMLService",

  "id" : 10000003,

  "description" : "Amazon S3-based metadata resolver",

  "metadataLocation" : "awss3://"}

Amazon S3 对象元数据应使用以下参数:

参数

描述

signature

元数据签名证书(如果有)。

 元数据位置

上述注册记录中的元数据位置需要指定为 awss3://,以向 CAS 发出信号,表明必须从 CAS 配置中定义的 Amazon S3 获取已注册服务提供商的 SAML 元数据。

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

必填

自选

签名和加密

笔记

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

Show  entries

搜索:

·  cas.authn.saml-idp.metadata.amazon-s3.credential-access-key=

使用 AWS 提供的访问密钥进行身份验证。

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

 org.apereo.cas.configuration.model.support.saml.idp.metadata.AmazonS3SamlMetadataProperties.

如何配置此属性?

·  cas.authn.saml-idp.metadata.amazon-s3.credential-secret-key=

使用 AWS 提供的密钥进行身份验证。

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

 org.apereo.cas.configuration.model.support.saml.idp.metadata.AmazonS3SamlMetadataProperties.

如何配置此属性?

·  cas.authn.saml-idp.metadata.amazon-s3.crypto.encryption.key=

加密密钥是一个 JWT,其长度由加密密钥大小设置定义。

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

 org.apereo.cas.configuration.model.core.util.EncryptionJwtCryptoProperties.

如何配置此属性?

·  cas.authn.saml-idp.metadata.amazon-s3.crypto.signing.key=

签名密钥是一个 JWT,其长度由签名密钥大小设置定义。

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

 org.apereo.cas.configuration.model.core.util.SigningJwtCryptoProperties.

如何配置此属性?

·  cas.authn.saml-idp.metadata.amazon-s3.endpoint=

AWS 自定义终端节点。

 org.apereo.cas.configuration.model.support.saml.idp.metadata.AmazonS3SamlMetadataProperties.

如何配置此属性?

显示 1 到 5 的 6 个条目

上一页12下一页

              1. 身份提供商元数据

属于 CAS 作为 SAML2 身份提供商的元数据构件也可以通过 Amazon S3 存储桶进行管理和存储。元数据、签名和加密密钥等构件保存在一个存储桶中,该存储桶包含具有以下字段的 JSON 文档:

描述

id

记录的标识符。

signingCertificate

签名证书。

signingKey

签名密钥。

encryptionCertificate

加密证书。

encryptionKey

加密密钥。

appliesTo

此元数据文档的所有者(即 CAS

metadata

元数据文档。

请注意,签名密钥和加密密钥应使用 CAS 加密密钥进行加密和签名。

              1. 每项服务

身份提供商元数据、证书和密钥也可以按服务定义,以覆盖全局默认值。适用于服务定义的元数据文档需要放入使用 [service-name][service-numeric-identifier] 格式命名的特殊存储桶中。

            1. DynamoDb
              1. DynamoDb - SAML2 元数据管理

元数据文档也可以存储在 Amazon DynamoDb 实例中并从 Amazon DynamoDb 实例中提取。这可能专门用于避免在集群中的 CAS 节点之间复制元数据文件,尤其是在需要处理多个双边 SAML 集成的情况下。元数据文档存储在单个预定义的存储桶中并从中获取,该存储桶通过设置教给 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-saml-idp-metadata-dynamodb"}

然后,必须按如下方式设计 SAML 服务定义,以允许 CAS 从 Amazon DynamoDb 获取元数据文档:

1

2

3

4

5

6

7

8

{

  "@class" : "org.apereo.cas.support.saml.services.SamlRegisteredService",

  "serviceId" : "the-entity-id-of-the-sp(s)",

  "name" : "SAMLService",

  "id" : 10000003,

  "description" : "Amazon DynamoDb metadata resolver",

  "metadataLocation" : "dynamodb://"}

 元数据位置

需要将上述注册记录中的元数据位置指定为 dynamodb://,以向 CAS 发出信号,表明必须从 CAS 配置中定义的 Amazon DynamoDb 获取已注册服务提供商的 SAML 元数据。

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

必填

自选

签名和加密

笔记

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

Show  entries

搜索:

·  cas.authn.saml-idp.metadata.dynamo-db.credential-access-key=

使用 AWS 提供的访问密钥进行身份验证。

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

 org.apereo.cas.configuration.model.support.saml.idp.metadata.DynamoDbSamlMetadataProperties.

如何配置此属性?

·  cas.authn.saml-idp.metadata.dynamo-db.credential-secret-key=

使用 AWS 提供的密钥进行身份验证。

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

 org.apereo.cas.configuration.model.support.saml.idp.metadata.DynamoDbSamlMetadataProperties.

如何配置此属性?

·  cas.authn.saml-idp.metadata.dynamo-db.crypto.encryption.key=

加密密钥是一个 JWT,其长度由加密密钥大小设置定义。

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

 org.apereo.cas.configuration.model.core.util.EncryptionJwtCryptoProperties.

如何配置此属性?

·  cas.authn.saml-idp.metadata.dynamo-db.crypto.signing.key=

签名密钥是一个 JWT,其长度由签名密钥大小设置定义。

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

 org.apereo.cas.configuration.model.core.util.SigningJwtCryptoProperties.

如何配置此属性?

·  cas.authn.saml-idp.metadata.dynamo-db.dax.url=

Cluster url 的 URL 中。例如,dax://my-cluster.l6fzcv.dax-clusters.us-east-1.amazonaws.com。

 org.apereo.cas.configuration.model.support.dynamodb.DynamoDbDaxProperties.

如何配置此属性?

显示 1 到 5 的 7 个条目

上一页12下一页

              1. 身份提供商元数据

属于 CAS 作为 SAML2 身份提供商的元数据构件也可以通过 Amazon DynamoDb 进行管理和存储。元数据、签名和加密密钥等构件保存在一个存储桶中,该存储桶包含具有以下字段的 JSON 文档:

描述

signingCertificate

签名证书。

signingKey

签名密钥。

encryptionCertificate

加密证书。

encryptionKey

加密密钥。

appliesTo

此元数据文档的所有者(即 CAS

metadata

元数据文档。

请注意,签名密钥和加密密钥应使用 CAS 加密密钥进行加密和签名。

              1. 每项服务

身份提供商元数据、证书和密钥也可以按服务定义,以覆盖全局默认值。适用于服务定义的元数据文档需要放入使用 [service-name][service-numeric-identifier] 格式命名的特殊存储桶中。

          1. 元数据筛选
            1. SAML2 服务提供商元数据筛选

本文档介绍了如何调整向 CAS 注册的 SAML2 服务提供商,以便有条件地从提供的元数据中筛选和提取实体。CAS 加载和处理的元数据量对内存和 CPU 消耗有直接影响,通常可以认为清除和筛选元数据文件和资源中 CAS 认为不适用或未使用的实体是一种适当的做法。

SAML2 元数据筛选是允许 CAS 在身份验证请求获得授权后确定可以从元数据源中提取、加载和缓存哪些服务提供商元数据实体的过程。最后,如果 SAML2 服务提供商的注册记录明确授权 CAS 接受身份验证请求,并且在筛选过程之后找到足够的元数据并将其附加到请求中,则可以识别服务提供商,则 SAML2 服务提供商将被视为有权继续下一步。

SAML2 元数据筛选通常遵循一个指令,以包含或排除与分配的规则匹配的条目。筛选过程的方向由 metadataCriteriaDirection 属性控制。

实体属性

实体 ID

当元数据包含特定实体属性时,可以指示已注册的 SAML2 服务提供商从其元数据源中提取和接受实体。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

{

  "@class": "org.apereo.cas.support.saml.services.SamlRegisteredService",

  "serviceId": "^https://.+",

  "metadataLocation": "/path/to/metadata.xml",

  "metadataCriteriaDirection": "include",

  "metadataCriteriaEntityAttributes":

  {

    "@class": "java.util.HashMap",

    "http://macedir.org/entity-category":

    [

      "java.util.ArrayList",

      [

        "http://id.incommon.org/category/research-and-scholarship",

        "http://refeds.org/category/research-and-scholarship"

      ]

    ]

  }}

上述注册记录仅允许 CAS 在以下情况下加载所有 SAML2 服务提供商的元数据:

        1. 属性发布
          1. 属性策略
            1. SAML2 属性发布

属性筛选和发布策略是按 SAML 服务定义的。有关更多信息,请参阅本指南。

INCOMMON 研究和奖学金

REFEDS 研究和奖学金

EDUPERSONTARGETEDID

Groovy

模式匹配实体 ID

实体属性

元数据请求的属性

元数据注册机构

身份验证请求属性

身份验证请求请求者 ID

匿名访问

假名访问

个性化访问

实体组

特定的属性发布策略可用于使用 entity属性值 http://id.incommon.org/category/research-and-scholarship 发布 InCommon Research and Scholarship 服务提供商所需的属性包:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

{

  "@class": "org.apereo.cas.support.saml.services.SamlRegisteredService",

  "serviceId": "entity-ids-allowed-via-regex",

  "name": "SAML",

  "id": 10,

  "metadataLocation": "path/to/incommon/metadata.xml",

  "attributeReleasePolicy": {

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

    "policies": [ "java.util.ArrayList",

      [

         {

           "@class": "org.apereo.cas.support.saml.services.InCommonRSAttributeReleasePolicy",

           "useUniformResourceName": false

         }

      ]

    ]

  }}

授权发布的属性设置为 eduPersonPrincipalName、eduPersonTargetedID、mail、displayName、givenName、surname、eduPersonScopedAffiliation。

          1. 属性定义
            1. SAML2 属性定义

可以使用 SamlIdPAttributeDefinition 定义专门应用于作为 SAML 响应一部分的属性发布的属性定义。使用此定义定义属性不会阻止其他协议释放该属性。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

{

  "@class": "java.util.TreeMap",

  "eduPersonPrincipalName": {

    "@class": "org.apereo.cas.support.saml.web.idp.profile.builders.attr.SamlIdPAttributeDefinition",

    "key": "eduPersonPrincipalName",

    "name": "eduPersonPrincipalName",

    "urn": "urn:oid:1.3.6.1.4.1.5923.1.1.1.6",

    "scoped": true,

    "encrypted": false,

    "attribute": "uid",

    "friendlyName": "eduPersonPrincipalName",

    "persistent": false,

    "salt": "6jGzT@!nf0i3"

  }}

可以为 SAML 属性定义指定以下附加设置:

名字

描述

friendlyName

(可选)在属性发布期间与目标应用程序共享的属性的友好名称。

urn

(可选)为属性定义了 Universal Resource 名称(即 urn:oid:1.3.6.1.4.1.5923.1.1.1.6)。

persistent

(可选)Boolean 标志,用于指示是否应将属性值生成为持久值。

salt

创建永久属性定义值时使用的必需 Salt 值。此字段支持 Spring 表达式语言语法。

要了解有关属性定义的更多信息,请参阅本指南。

            1. 持久定义

诸如 eduPersonTargetedID 之类的属性可以注册为持久性属性定义,从而允许 CAS 为用户名提供不透明的标识符。此值是一个元组,由委托人的不透明标识符、标识符源的名称以及标识符的目标受众的名称组成。

1

2

3

4

5

6

7

8

9

10

11

12

{

  "@class": "java.util.TreeMap",

  "eduPersonTargetedID": {

    "@class": "org.apereo.cas.support.saml.web.idp.profile.builders.attr.SamlIdPAttributeDefinition",

    "key": "eduPersonTargetedID",

    "name": "eduPersonTargetedID",

    "urn": "urn:oid:1.3.6.1.4.1.5923.1.1.1.10",

    "persistent": true,

    "salt": "OqmG80fEKBQt",

    "friendlyName": "eduPersonTargetedID"

  }}

            1. Default

默认情况下,CAS 会自动包含以下已知属性定义和附带属性定义:

名字

uid

urn:oid:0.9.2342.19200300.100.1.1

title

urn:oid:2.5.4.12

sn

urn:oid:2.5.4.4

surname

urn:oid:2.5.4.4

givenName

urn:oid:2.5.4.42

telephoneNumber

urn:oid:2.5.4.20

email

urn:oid:0.9.2342.19200300.100.1.3

mail

urn:oid:0.9.2342.19200300.100.1.3

commonName

urn:oid:2.5.4.3

displayName

urn:oid:2.16.840.1.113730.3.1.241

organizationName

urn:oid:2.5.4.10

eduPersonPrimaryAffiliation

urn:oid:1.3.6.1.4.1.5923.1.1.1.5

eduPersonAffiliation

urn:oid:1.3.6.1.4.1.5923.1.1.1.1

eduPersonTargetedID

urn:oid:1.3.6.1.4.1.5923.1.1.1.10

eduPersonEntitlement

urn:oid:1.3.6.1.4.1.5923.1.1.1.7

eduPersonPrincipalName

urn:oid:1.3.6.1.4.1.5923.1.1.1.6

eduPersonScopedAffiliation

urn:oid:1.3.6.1.4.1.5923.1.1.1.9

eduPersonUniqueId

urn:oid:1.3.6.1.4.1.5923.1.1.1.13

eduPersonAssurance

urn:oid:1.3.6.1.4.1.5923.1.1.1.11

eduPersonNickname

urn:oid:1.3.6.1.4.1.5923.1.1.1.2

eduPersonOrcid

urn:oid:1.3.6.1.4.1.5923.1.1.1.14

          1. 属性值类型
            1. SAML2 属性值类型

默认情况下,在最终 SAML2 响应中创建的属性值块在编码的 XML 中不携带任何类型信息。如有必要,您可以根据 SAML2 服务提供商的要求(如果有)对属性值强制执行特定类型。使用特定类型信息编码的属性示例如下:

1

2

3

4

5

6

<saml2:Attribute FriendlyName="givenName"

                 Name="givenName"

                 NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">

    <saml2:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

                          xsi:type="xsd:string">HelloWorld</saml2:AttributeValue></saml2:Attribute>

支持以下属性值类型:

类型

描述

XSString

将属性值类型标记为 string。

XSURI

将属性值类型标记为 uri。

XSBoolean

将属性值类型标记为boolean。

XSInteger

将属性值类型标记为 integer。

XSDateTime

将属性值类型标记为 datetime 。

XSBase64Binary

将属性值类型标记为 base64Binary。

XSObject

跳过属性值类型,并将值序列化为复杂的 XML 对象/POJO。

XSObject

跳过属性值类型,并将值序列化为复杂的 XML 对象/POJO。

NameIDType

转换属性以包含与 Subject 的 NameID 匹配的内联 NameID 元素。

urn:oasis:names:tc:SAML:2.0:nameid-format:persistent

转换属性以包含内联持久性 NameID,而不考虑Subject NameID。

…其中每个属性的类型定义如下:

1

2

3

4

5

6

7

8

9

10

11

{

  "@class": "org.apereo.cas.support.saml.services.SamlRegisteredService",

  "serviceId" : "the-entity-id-of-the-sp",

  "name": "SAML Service",

  "metadataLocation" : "../../sp-metadata.xml",

  "id": 1,

  "attributeValueTypes": {

    "@class": "java.util.HashMap",

    "<attribute-name>": "<attribute-value-type>"

  }}

            1. 例子

以下示例可用。

              1. 内联 NameID - 链接

以下部分配置会将属性值编码为 NameID,类似于 Subject 的 NameID:

1

2

3

4

5

6

..."attributeValueTypes": {

    "@class": "java.util.HashMap",

    "urn:oid:1.3.6.1.4.1.5923.1.1.1.10": "NameIDType"}...

此处 NameID 的构造与 Subject 的 NameID 元素相同,此处对此进行了介绍。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<saml2:Subject>

    <saml2:NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"

                  NameQualifier="https://idp-test.example.org/cas/idp"

                  SPNameQualifier="https://testsp3.example.org/shibboleth">lkXqG+QpbLU47hvjVvfiADxEQs0=</saml2:NameID></saml2:Subject>

...

<saml2:Attribute FriendlyName="eduPersonTargetedID" Name="urn:oid:1.3.6.1.4.1.5923.1.1.1.10"

    NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">

    <saml2:NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"

                  NameQualifier="https://idp-test.example.org/cas/idp"

                  SPNameQualifier="https://testsp3.example.org/shibboleth">lkXqG+QpbLU47hvjVvfiADxEQs0=</saml2:NameID></saml2:Attribute>

...

              1. 内联 NameID - 已分离

以下部分配置将对属性值进行编码,并将其与为 Subject 生成的 NameID 分开并分离:

1

2

3

4

5

6

..."attributeValueTypes": {

    "@class": "java.util.HashMap",

    "urn:oid:1.3.6.1.4.1.5923.1.1.1.10": "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"}...

…这将产生以下响应:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

<saml2:Subject>

    <saml2:NameID

            Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient"

            NameQualifier="https://idp-test.example.org/cas/idp"

            SPNameQualifier="https://testsp3.example.org/shibboleth">AAdzZWNyZXQx6VkzIjk/ckEDc</saml2:NameID></saml2:Subject>

...

<saml2:Attribute FriendlyName="eduPersonTargetedID" Name="urn:oid:1.3.6.1.4.1.5923.1.1.1.10"

    NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">

    <saml2:NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"

                  NameQualifier="https://idp-test.example.org/cas/idp"

                  SPNameQualifier="https://testsp3.example.org/shibboleth">lkXqG+QpbLU47hvjVvfiADxEQs0=</saml2:NameID></saml2:Attribute>

...

          1. 属性友好名称
            1. SAML2 属性友好名称

可以在服务注册表中为每个依赖方指定属性友好名称,也可以通过 CAS 设置全局指定。如果没有为属性定义友好名称,则将改用属性名称来代替它。请注意,属性的名称是旨在发布给服务提供商的名称,特别是当原始属性映射到其他名称时。

1

2

3

4

5

6

7

8

9

10

11

{

  "@class": "org.apereo.cas.support.saml.services.SamlRegisteredService",

  "serviceId" : "the-entity-id-of-the-sp",

  "name": "SAML Service",

  "metadataLocation" : "../../sp-metadata.xml",

  "id": 100001,

  "attributeFriendlyNames": {

    "@class": "java.util.HashMap",

    "urn:oid:2.5.4.42": "friendly-name-to-use"

  }}

您还可以选择通过 CAS 属性全局定义属性友好名称。

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

必填

自选

签名和加密

笔记

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

Show  entries

搜索:

·  cas.authn.saml-idp.core.entity-id=https://cas.example.org/idp

部署的 SAML 实体 ID。

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

 org.apereo.cas.configuration.model.support.saml.idp.SamlIdPCoreProperties.

如何配置此属性?

·  cas.authn.saml-idp.core.session-replication.cookie.crypto.encryption.key=

加密密钥是一个 JWT,其长度由加密密钥大小设置定义。

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

 org.apereo.cas.configuration.model.core.util.EncryptionJwtCryptoProperties.

如何配置此属性?

·  cas.authn.saml-idp.core.session-replication.cookie.crypto.signing.key=

签名密钥是一个 JWT,其长度由签名密钥大小设置定义。

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

 org.apereo.cas.configuration.model.core.util.SigningJwtCryptoProperties.

如何配置此属性?

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

上一页1下一页

          1. 属性名称格式
            1. SAML2 属性名称格式

可以在服务注册表中为每个依赖方指定属性名称格式。

1

2

3

4

5

6

7

8

9

10

11

{

  "@class": "org.apereo.cas.support.saml.services.SamlRegisteredService",

  "serviceId" : "the-entity-id-of-the-sp",

  "name": "SAML Service",

  "metadataLocation" : "../../sp-metadata.xml",

  "id": 100001,

  "attributeNameFormats": {

    "@class": "java.util.HashMap",

    "attributeName": "basic|uri|unspecified|custom-format-etc"

  }}

单个属性的名称格式可以映射到许多预定义的格式,也可以映射到您自己选择的自定义格式。要在最终 SAML 响应中编码的给定属性可以包含以下任何名称格式:

类型

描述

basic

将属性映射到 urn:oasis:names:tc:SAML:2.0:attrname-format:basic。

uri

将属性映射到 urn:oasis:names:tc:SAML:2.0:attrname-format:uri。

unspecified

将属性映射到 urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified。

urn:my:own:format

将属性映射到 urn:my:own:format。

您还可以选择通过 CAS 属性全局定义属性及其相关名称格式。

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

必填

自选

签名和加密

笔记

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

Show  entries

搜索:

·  cas.authn.saml-idp.core.entity-id=https://cas.example.org/idp

部署的 SAML 实体 ID。

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

 org.apereo.cas.configuration.model.support.saml.idp.SamlIdPCoreProperties.

如何配置此属性?

·  cas.authn.saml-idp.core.session-replication.cookie.crypto.encryption.key=

加密密钥是一个 JWT,其长度由加密密钥大小设置定义。

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

 org.apereo.cas.configuration.model.core.util.EncryptionJwtCryptoProperties.

如何配置此属性?

·  cas.authn.saml-idp.core.session-replication.cookie.crypto.signing.key=

签名密钥是一个 JWT,其长度由签名密钥大小设置定义。

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

 org.apereo.cas.configuration.model.core.util.SigningJwtCryptoProperties.

如何配置此属性?

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

上一页1下一页

......

关键字:网易企业邮箱和个人邮箱的区别_百度seo新站优化_网络安全有名的培训学校_刷百度指数

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: