如有疑问,请看视频:CAS单点登录(第7版)
CAS 使用 Spring Webflow 对登录和注销协议进行脚本处理。Spring Web Flow 构建在 Spring MVC 之上,并允许实现 Web 应用程序的“流”。流封装了一系列步骤,这些步骤将指导用户完成某些业务任务的执行。它跨越多个 HTTP 请求,具有状态,处理事务数据,可重用,并且本质上可能是动态的和长时间运行的。除许多其他设置外,每个流可能包含以下主要元素:
操作:描述可执行任务并返回结果的组件
Transitions:将流从一种状态路由到另一种状态;转换可能是整个流的全局转换。
视图:描述显示回客户端的表示层的组件
决策:有条件地路由到其他流区域并可以做出逻辑决策的组件
Spring Web Flow 为 CAS 提供了一个可插拔的架构,其中自定义操作、视图和决策可以注入到流中,以考虑其他用例和流程。请注意,要自定义 webflow,必须对 webflow 内部和注入策略有一定的了解。本文档的目的不是描述 Spring Web Flow,而只是演示 CAS 如何使用该框架来执行协议和业务逻辑执行的各个方面。
有关更多信息,请参阅本指南。
有关更多信息,请参阅本指南。
如果您想了解如何修改和扩展 CAS 身份验证流程,请参阅本指南。
CAS 提供以下端点:
GET | /cas/actuator/springWebflow |
使用可选的流 ID 获取 Spring webflow 报告。
通过查看本指南,了解如何从外部数据源和终端节点动态获取和显示数据,并将这些数据传递给 Webflow。
有关更多信息,请参阅本指南。
CAS 提供了允许用户在继续应用程序之前接受使用策略的功能。有关更多信息,请参阅本指南。
有关更多信息,请参阅本指南。
有关更多信息,请参阅本指南。
要启用其他日志记录,请修改日志记录配置文件以添加以下内容:
1 2 3 4 | <Logger name="org.springframework.webflow" level="debug" additivity="false"> <AppenderRef ref="casConsole"/> <AppenderRef ref="casFile"/></Logger> |
大多数 CAS 模块在声明为依赖项时,会尝试自动配置 CAS webflow 以满足其需求。这实际上意味着 CAS 采用者不再需要手动修改 CAS webflow 配置,并且该模块会自动处理所有需要的更改。虽然这是默认行为,但您可能希望手动处理所有此类更改。为此,您需要禁用 webflow 的 CAS 自动配置。
CAS 配置目录中提供了以下设置和属性:
自选
笔记
下面列出的配置设置在 CAS 配置元数据中标记为 Optional(可选)。This标志表示在最终用户 CAS 配置中不需要立即存在该设置,因为分配了默认值,或者该功能的激活不受设置值有条件地控制。换句话说,仅当需要修改默认值或需要打开由设置控制的功能时,才应在配置中包含此字段。
Show entries
搜索:
· cas.webflow.auto-configuration.enabled=true 是否应启用 webflow 自动配置。 org.apereo.cas.configuration.model.core.web.flow.WebflowAutoConfigurationProperties. 如何配置此属性? |
· cas.webflow.auto-configuration.order=0 配置 webflow 的顺序。 org.apereo.cas.configuration.model.core.web.flow.WebflowAutoConfigurationProperties. 如何配置此属性? |
显示 1 到 2 的 2 个条目
上一页1下一页
注意
仅在绝对必要时尝试手动修改 Spring webflow 配置文件,并且更改相当小或装饰性。如果不小心对 webflow 进行大量修改可能会使您的部署和未来的升级严重复杂化。如果合理,请考虑为项目做出贡献或建议更改,并直接维护它。
所有webflow组件和CAS视图都可以访问从各种配置源定义的整个CAS设置包。这允许使用变量casProperties扩展和修改任何CAS视图或webflow组件,以获得对特定设置的访问权限。请记住,此语法仅允许访问CAS拥有的的设置,并由其自己的前缀注明。
以下设置和属性可从CAS配置曲库获得:
可选
笔记
下面列出的配置设置在CAS配置元数据中被标记为可选。该标志表示在最终用户CAS配置中不需要立即存在该设置,因为分配了默认值或功能的激活不受设置值的有条件控制。换句话说,如果您需要修改默认值或如果您需要打开由设置控制的功能,您应该只在您的配置中包含此字段。
Show entries
搜索:
· cas.custom.properties= 可用于本地部署的自定义设置的集合。这些设置应可用于CAS视图和webflow,以便在不引入新属性命名空间的情况下更改UI和/或向任何扩展自定义组件引入自定义行为。这被定义为映射,其中键应为设置名称,值应为设置值。 org.apereo.cas.configuration.model.support.custom.CasCustomProperties. 如何配置此属性? |
显示1到1个条目中的1个
上一个1下一个
用法
如果您正在扩展CAS以定义自己的组件和业务逻辑,并且需要找到一种方法来定义自己的设置,我们通常建议您使用自己的@ConfigurationProperties约定定义自己的设置命名空间和前缀。劫持CAS拥有的配置命名空间应该被视为一个糟糕的设计选择,必须避免。
默认情况下,CAS 配置为在身份验证期间识别和处理 Web 流的许多异常。每个异常在 messages.properties 中都有特定的消息包映射。这样就可以在登录表单上向最终用户显示特定消息。任何无法识别或未映射的异常都会导致 UNKNOWN 映射具有通用Invalid credentials. 消息。
要在 webflow 中映射自定义异常,需要在 CAS 设置中映射异常,然后在 messages.properties 中定义相关错误:
1 | authenticationFailure.MyAuthenticationException=Authentication has failed, but it did it my way! |
CAS 配置目录中提供了以下设置和属性:
必填
自选
Groovy 脚本
笔记
下面列出的配置设置在 CAS 配置元数据中标记为 Required。此标志表示可能需要该设置的存在才能激活或影响 CAS 功能的行为,并且通常应进行审查、可能拥有和调整。如果为该设置分配了默认值,则无需严格将该设置放在配置副本中,但仍应对其进行检查以确保它符合您的部署预期。
Show entries
搜索:
· cas.authn.errors.groovy.location= 在 CAS 能够自动监视底层资源的更改并动态检测更新和修改的情况和场景中,您可以将以下设置指定为环境变量或系统属性,其值为 false,以禁用资源观察程序:org.apereo.cas.util.io.PathWatcherService。 org.apereo.cas.configuration.model.core.authentication.GroovyAuthenticationExceptionsProperties. 如何配置此属性? |
显示 1 到 1 的 1 个条目
上一页1下一页
报告回 webflow 的异常和身份验证错误可以使用外部 Groovy 脚本捕获和处理。如果脚本可以支持和处理错误,则其结果应该是 webflow 应用作最终目标状态的事件:
脚本的轮廓应与以下内容匹配:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | import org.apereo.cas.* import org.springframework.context.* import org.springframework.webflow.* import org.springframework.webflow.action.* import org.springframework.webflow.execution.* def run(Object[] args) { def (exception,requestContext,applicationContext,logger) = args logger.info("Handling {}", exception) new EventFactorySupport().event(this, "customEvent")} def supports(Object[] args) { def (exception,requestContext,applicationContext,logger) = args logger.info("Checking to support {}", exception) true} |
传递的参数如下:
参数 | 描述 |
exception | 表示错误的对象。 |
requestContext | 表示 Spring Webflow RequestContext 的对象。 |
applicationContext | 表示 Spring ApplicationContext 的对象。 |
logger | 负责发出日志消息的对象,例如 logger.info(...) |
要准备 CAS 以支持 Apache Groovy 并与之集成,请查看本指南。
对于更高级的场景,你也可以设计你的 webflow 异常处理程序,并在运行时将其注册到 CAS:
1 2 3 4 | @Beanpublic CasWebflowExceptionHandler customExceptionHandler(){ return new CustomCasWebflowExceptionHandler();} |
请参阅本指南,了解有关如何将配置注册到 CAS 运行时的更多信息。
本指南的目的是更好地描述 CAS 如何利用 Spring Webflow 来适应各种身份验证流。请记住,这并不是要教 Spring Webflow 本身如何在内部工作。如果您想了解有关 Spring Webflow 的更多信息并了解操作、状态、决策和范围的内部结构,请参阅本指南。
默认情况下,CAS 对以下核心 webflow 配置文件进行操作:
流 | 描述 |
login | 登录尝试的身份验证流程。 |
logout | 注销尝试的身份验证流程。 |
pswdreset | 密码管理和密码重置流程。 |
account | 账户管理和个人资料流程.. |
上述流为 CAS 的核心处理登录和注销流所需的最小结构提供了最小结构。需要注意的是,在运行时,许多其他操作和状态会动态注入到这些流中,具体取决于 CAS 配置和功能模块的存在。还要注意,每个功能模块本身可能会动态地呈现其他固执己见的子流配置文件,这些文件会在运行时自动获取。
在一些微不足道的情况下,您可以覆盖和修改核心流配置文件,以添加或覆盖所需的行为。同样,在将这些更改引入 deploymentenvironment 之前,请仔细考虑。尽可能避免对 webflow 进行临时更改,并考虑您心中的更改如何更适合作为对 CAS 项目本身的直接贡献,以便您可以利用它的配置而不是它的维护。
要了解如何在 Spring Webflow 中引入新的 action 和 state,请参阅本指南。
大声说出来
如果您发现 webflow 自动配置策略无法如宣传的那样交付,请与项目社区讨论并提交一个补丁来纠正错误或添加所需的行为作为适度的增强。避免一次性更改,并在更改所属的位置进行更改。
在更高级的情况下,您可能需要深入研究并有条件地更改核心 CAS 行为,您需要利用 CAS API 来交付更改。直接使用 CAS API 确实具有以下优势,但需要一定的成本:
更改的范围都限定为 Java(Groovy、Kotlin、Clojure 等)。
您拥有 Java 的全部功能,可以动态和有条件地增强 Spring Webflow。
您的更改都是自包含的。
更改现在是 CAS API 的一部分,它们将被编译。升级的重大更改(如果有)应在构建时立即注意到。
-
-
-
- Java
-
-
这是动态更改 webflow 内部的最传统但最强大的方法。您将被要求编写组件,这些组件会自动配置 webflow 并将自身注入正在运行的 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-core-webflow"} |
设计
使用以下形式设计更改 Webflow 的动态 webflow 配置代理:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public class SomethingWebflowConfigurer extends AbstractCasWebflowConfigurer { public SomethingWebflowConfigurer(FlowBuilderServices flowBuilderServices, FlowDefinitionRegistry flowDefinitionRegistry, ApplicationContext applicationContext, CasConfigurationProperties casProperties) { super(flowBuilderServices, flowDefinitionRegistry, applicationContext, casProperties); } @Override protected void doInitialize() throws Exception { var flow = super.getLoginFlow(); // Magic happens; Call 'super' to see // what you have access to and alter the flow. }} |
父类 AbstractCasWebflowConfigurer 以类似 DSL 的方式提供了许多辅助方法和实用程序,以隐藏 Spring Webflow API 的复杂性,从而使定制更容易。
注册
然后,您需要将新设计的组件注册到 CAS 应用程序运行时中:
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 | package org.example.something; @AutoConfiguration@EnableConfigurationProperties(CasConfigurationProperties.class)public class SomethingConfiguration implements CasWebflowExecutionPlanConfigurer { @Autowired private CasConfigurationProperties casProperties; @Autowired @Qualifier(CasWebflowConstants.BEAN_NAME_LOGIN_FLOW_DEFINITION_REGISTRY) private FlowDefinitionRegistry loginFlowDefinitionRegistry; @Autowired private ApplicationContext applicationContext; @Autowired private FlowBuilderServices flowBuilderServices; @ConditionalOnMissingBean(name = "somethingWebflowConfigurer") @Bean public CasWebflowConfigurer somethingWebflowConfigurer() { return new SomethingWebflowConfigurer(flowBuilderServices, loginFlowDefinitionRegistry, applicationContext, casProperties); } @Override public void configureWebflowExecutionPlan(final CasWebflowExecutionPlan plan) { plan.registerWebflowConfigurer(somethingWebflowConfigurer()); }} |
需要通过此处概述的策略向 CAS 注册配置类。
建立并超越
请注意,编译 configuration 类和放入 CAS Overlay 的任何其他 Java 代码可能需要额外的 CAS 模块和 Classpath 上的依赖项。您将需要研究 CAS 代码库并找到包含所需组件的正确模块,例如 CasWebflowConfigurer 等。
有关更多信息,请参阅本指南。
-
-
-
- Groovy
-
-
您可以通过 Groovy 脚本配置 CAS 以更改和自动配置 webflow。这是一个不太复杂的选项,您可以适度访问允许您更改 webflow 的 CAS API。但是,覆盖和所需依赖项的配置和基架更容易,因为所有这些都由 CAS 在运行时提供。
停止编码
请记住,这里提供的 API,特别是作为 Groovy 脚本的一部分执行的 API,主要被视为 CAS 内部的实现。您可以毫不犹豫地添加或删除它们,这意味着更改可能会在运行时中断您的部署和升级。请记住,与 Java 类不同,在构建 CAS 时,脚本不会进行静态编译,只有在打开服务器并进行部署时,您才可能观察到失败。因此,选择此选项是有充分理由的,并确保在单步执行代码之前已经考虑了更改。
配置
要准备 CAS 以支持 Apache Groovy 并与之集成,请查看本指南。
CAS 配置目录中提供了以下设置和属性:
必填
自选
Groovy 脚本
笔记
下面列出的配置设置在 CAS 配置元数据中标记为 Required。此标志表示可能需要该设置的存在才能激活或影响 CAS 功能的行为,并且通常应进行审查、可能拥有和调整。如果为该设置分配了默认值,则无需严格将该设置放在配置副本中,但仍应对其进行检查以确保它符合您的部署预期。
Show entries
搜索:
· cas.webflow.groovy.location= 在 CAS 能够自动监视底层资源的更改并动态检测更新和修改的情况和场景中,您可以将以下设置指定为环境变量或系统属性,其值为 false,以禁用资源观察程序:org.apereo.cas.util.io.PathWatcherService。 org.apereo.cas.configuration.model.core.web.flow.GroovyWebflowProperties. 如何配置此属性? |
· cas.webflow.login-decorator.groovy.location= 在 CAS 能够自动监视底层资源的更改并动态检测更新和修改的情况和场景中,您可以将以下设置指定为环境变量或系统属性,其值为 false,以禁用资源观察程序:org.apereo.cas.util.io.PathWatcherService。 org.apereo.cas.configuration.model.core.web.flow.GroovyWebflowLoginDecoratorProperties. 如何配置此属性? |
显示 1 到 2 的 2 个条目
上一页1下一页
Webflow 自动配置
下面是一个示例 Groovy 脚本,旨在查找 CAS 登录流和流中预定义的特定状态。如果找到,则会将自定义操作插入到状态中,以便在 CAS 在流中进入该状态后立即执行。虽然这是一个相当普通的示例,但请注意,该脚本具有添加/删除操作、状态、过渡、添加/删除子流等功能。
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 | import java.util.* import org.apereo.cas.* import org.apereo.cas.web.* import org.apereo.cas.web.support.* import org.apereo.cas.web.flow.* import org.springframework.webflow.* import org.springframework.webflow.engine.* import org.springframework.webflow.execution.* Object run(final Object... args) { def (webflow,springApplicationContext,logger) = args logger.info("Configuring webflow context...") def loginFlow = webflow.getLoginFlow() if (webflow.containsFlowState(loginFlow, CasWebflowConstants.STATE_ID_INIT_LOGIN_FORM)) { logger.info("Found state that initializes the login form") def state = webflow.getState(loginFlow, CasWebflowConstants.STATE_ID_INIT_LOGIN_FORM, ActionState.class) logger.info("The state id is {}", state.id) state.getEntryActionList().add({ requestContext -> def flowScope = requestContext.flowScope def httpRequest = WebUtils.getHttpServletRequestFromExternalWebflowContext(requestContext) logger.info("Action executing as part of ${state.id}. Stuff happens...") return new Event(this, "success") }) logger.info("Added action to ${state.id}'s entry action list") } return true} |
传递的参数如下:
参数 | 描述 |
webflow | 表示 Spring Webflow API 之上的 Facade 的对象。 |
springApplicationContext | Spring 应用程序上下文。 |
logger | 用于发出日志消息的 Logger 对象,例如 logger.info(...) |
Webflow 操作
Webflow 操作通常通过 Action 组件处理,这些组件在 CAS 运行时中实现并注册为 Bean 定义。虽然这些定义可以有条件地替换为替代实现,但您也可以选择通过 Groovy 脚本执行操作。在这种情况下,您自己接管了操作实施的责任,从而减轻了 CAS 为您提供实施的负担。
CAS 配置目录中提供了以下设置和属性:
自选
Groovy 脚本
笔记
下面列出的配置设置在 CAS 配置元数据中标记为 Optional(可选)。This标志表示在最终用户 CAS 配置中不需要立即存在该设置,因为分配了默认值,或者该功能的激活不受设置值有条件地控制。换句话说,仅当需要修改默认值或需要打开由设置控制的功能时,才应在配置中包含此字段。
Show entries
搜索:
· cas.webflow.groovy.actions= 此设置允许提供 Spring Webflow 操作的替代实现,就像在 Groovy 中实现的那样。请参阅 CAS 文档,了解脚本的大纲以及预期的任何输入和输出。此设置定义为 map,其中键应该是提供 Spring Webflow 操作的 bean 的名称/标识符,值是 Groovy 脚本的资源路径(即 file:/path/to/Script.groovy),当 CAS 和 Spring Webflow 执行运行时调用该操作时,应执行该脚本。您需要检查 CAS 代码库,以便为相关操作找到正确的 bean 标识符。请注意,Groovy 脚本完全取代了 Spring Webflow 操作的 CAS 实现,并且必须仔细设计并符合 webflow 编排的其余部分。 org.apereo.cas.configuration.model.core.web.flow.GroovyWebflowProperties. 如何配置此属性? |
显示 1 到 1 的 1 个条目
上一页1下一页
注意
您需要先挖掘原始操作 Bean 的名称,然后才能提供 Groovy 替代品。这将需要对 CAS 代码库进行仔细分析。此外,请注意,并非所有 Spring Webflow 操作都可以替换为 Groovy 等效项。Groovy 支持在这一领域是一项持续的开发工作,并将在各种 CAS 版本中逐渐改进。请与代码库进行交叉检查以确保。
脚本的大纲可能如下所示:
1 2 3 4 5 6 7 8 9 10 11 | import org.apereo.cas.authentication.principal.*import org.apereo.cas.authentication.*import org.apereo.cas.util.*import org.springframework.webflow.*import org.springframework.webflow.action.* def run(Object[] args) { def (requestContext,applicationContext,properties,logger) = args logger.info("Handling action...") return new EventFactorySupport().event(this, "success")} |
脚本的结果应该是 Spring Webflow Event。传递的参数如下:
参数 | 描述 |
requestContext | 表示承载 HTTP 请求和响应的 Spring Webflow 执行上下文的对象。 |
applicationContext | Spring 应用程序上下文。 |
properties | 对 CAS 配置属性的引用。 |
logger | 用于发出日志消息的 Logger 对象,例如 logger.info(...) |
有时,您可能需要修改 CAS webflow 以包含其他数据,这些数据通常从外部资源和终端节点获取,这些数据也可能被视为敏感资源和终端节点,并且可能需要凭据才能访问。示例包括在 CAS 登录屏幕上显示公告或其他类型的动态数据。您当然可以扩展 webflow,将其他状态和操作包含在登录流中,以调用终端节点和数据源来获取数据。一个更简单的选择是让 CAS 通过访问您的 REST 端点等来自动装饰 webflow,并处理内部 webflow 配置。当 CAS 开始渲染登录视图时,会专门调用此类装饰器,同时保留将来装饰 webflow 其他部分的权利。
请注意,装饰器只会将数据注入到 webflow 上下文中,这些数据稍后可用于 CAS 视图,等等。一旦数据可用,您仍然有责任使用该数据在适当的视图中正确显示它并正确设置其样式。
用法
请记住,放入 webflow 上下文中的对象和数据必须始终是 Serializable 的。未通过序列化要求的 Complexobjects 和数据结构很可能会中断流程。
-
-
-
- 装饰
-
-
可以使用以下装饰器:
选择 | 参考 |
Groovy | 请参阅本指南。 |
REST | 请参阅本指南。 |
请注意,装饰器通常在 webflow 运行时执行特定操作之前执行,并且它们几乎总是针对所有 webflow 操作执行,而不管拥有的流如何。这样,如有必要,您可以选择使用其他数据装饰所有 CAS Web 流和子流,并且您不仅限于装饰登录流或登录页面。
-
-
-
- 自定义
-
-
可以使用@Bean以下将在 @AutoConfiguration 类中注册的 webflow 装饰器来设计 webflow 装饰器并将其注入 CAS 中:
1 2 3 4 | @Beanpublic WebflowDecorator myWebflowDecorator() { return new MyWebflowDecorator();} |
您的配置类需要向 CAS 注册。有关更多详细信息,请参阅本指南。
Groovy登录装饰器允许使用外部Groovy脚本将数据注入Spring webflow上下文,该脚本可能采用以下形式:
1 2 3 4 5 | def run(Object[] args) { def (requestContext,logger) = args logger.info("Decorating the webflow...") requestContext.flowScope.put("decoration", ...) } |
传递的参数如下:
参数 | 描述 |
requestContext | RequestContext将各种类型的范围作为数据容器。 |
logger | 用于在需要时发出日志消息的Logger对象。 |
以下设置和属性可从CAS配置曲库获得:
必填
Groovy脚本
笔记
下面列出的配置设置在CAS配置元数据中标记为必需。此标志表示可能需要设置的存在来激活或影响CAS功能的行为,通常应该进行审查、可能拥有和调整。如果设置被分配了默认值,则不需要严格将设置放入配置副本中,但仍应审查它以确保它符合您的部署期望。
Show entries
搜索:
· cas.webflow.login-decorator.groovy.location= 在CAS能够自动监视基础资源的更改并动态检测更新和修改的情况下,您可以将以下设置指定为值为false的环境变量或系统属性,以禁用资源监视程序:org.apereo.cas.util.io.PathWatcherService。 org.apereo.cas.configuration.model.core.web.flow.GroovyWebflowLoginDecoratorProperties. 如何配置此属性? |
显示1到1个条目中的1个
上一个1下一个
要准备CAS以支持和与Apache Groovy集成,请查看本指南。
RESTful登录装饰器允许通过访问外部REST API将数据注入webflow上下文。如果端点使用200状态代码进行响应,CAS将解析响应正文为JSON对象,并将结果填充到webflow的flowScope容器中,密钥为decoration。请记住,填充到webflow中的数据必须是可序列化的,如果您打算传递复杂的对象类型和花哨的数据结构,您需要确保它们能够安全并最终转换为简单的byte[]。
以下设置和属性可从CAS配置曲库获得:
必填
可选
笔记
下面列出的配置设置在CAS配置元数据中标记为必需。此标志表示可能需要设置的存在来激活或影响CAS功能的行为,通常应该进行审查、可能拥有和调整。如果设置被分配了默认值,则不需要严格将设置放入配置副本中,但仍应审查它以确保它符合您的部署期望。
Show entries
搜索:
· cas.webflow.login-decorator.rest.url= 用于联系和检索属性的端点URL。 此设置支持Spring表达式语言。 org.apereo.cas.configuration.model.core.web.flow.RestfulWebflowLoginDecoratorProperties. 如何配置此属性? |
显示1到1个条目中的1个
上一个1下一个
CAS使用Spring Webflow来管理身份验证序列。Spring Webflow提供了一个可插拔的架构,通过该架构,可以轻松控制和导航整个主要身份验证工作流中的各种操作、决策和操作。为了使这种导航工作,必须维护某种形式的会话会话状态。
DELETE | /cas/actuator/sessions/{sessionId} |
提供有关由Spring Session管理的应用程序HTTP会话的信息。
GET | /cas/actuator/sessions |
GET | /cas/actuator/sessions/{sessionId} |
CAS提供了一种在Spring Webflow中存储客户端上的流执行状态的工具。流状态作为编码字节流存储在呈现视图时提供给客户端的流执行标识符中。默认情况下,CAS通过加密和签名密钥自动尝试以加密形式存储和跟踪客户端上的此状态,以消除会话清理、终止和复制的需要。
以下设置和属性可从CAS配置曲库获得:
必填
可选
签名和加密
笔记
下面列出的配置设置在CAS配置元数据中标记为必需。此标志表示可能需要设置的存在来激活或影响CAS功能的行为,通常应该进行审查、可能拥有和调整。如果设置被分配了默认值,则不需要严格将设置放入配置副本中,但仍应审查它以确保它符合您的部署期望。
Show entries
搜索:
· cas.webflow.crypto.encryption.key= 加密密钥。默认情况下,除非另有指定,否则加密密钥必须是随机生成的字符串,其长度由加密密钥大小设置定义。 org.apereo.cas.configuration.model.core.util.EncryptionRandomizedCryptoProperties. 如何配置此属性? |
· cas.webflow.crypto.signing.key= 签名密钥是一个JWT,其长度由签名密钥大小设置定义。 此设置支持Spring表达式语言。 org.apereo.cas.configuration.model.core.util.SigningJwtCryptoProperties. 如何配置此属性? |
· cas.webflow.session.storage=false 控制Spring webflow会话是存储在服务器端还是客户端。默认情况下,状态在客户端进行管理,也进行签名和加密。 org.apereo.cas.configuration.model.core.web.flow.WebflowSessionManagementProperties. 如何配置此属性? |
显示3个条目中的1到3个
上一个1下一个
如果部署者没有生成密钥,CAS将尝试自动生成密钥,并输出每个受尊重密钥的结果。部署者必须尝试将生成的密钥复制到其CAS属性文件中,特别是在运行多节点CAS部署时。否则将阻止CASto对webflow状态进行适当的解密和加密,并阻止成功的单点登录。
使用警告!
虽然上述设置都是可选的,但建议您提供自己的配置和设置来加密和转码Web会话状态。
如果您希望使用服务器端会话存储来管理webflow会话,则需要通过CAS属性启用此行为。
以下设置和属性可从CAS配置曲库获得:
必填
可选
第三方
笔记
下面列出的配置设置在CAS配置元数据中标记为必需。此标志表示可能需要设置的存在来激活或影响CAS功能的行为,通常应该进行审查、可能拥有和调整。如果设置被分配了默认值,则不需要严格将设置放入配置副本中,但仍应审查它以确保它符合您的部署期望。
Show entries
搜索:
· cas.webflow.session.storage=false 控制Spring webflow会话是存储在服务器端还是客户端。默认情况下,状态在客户端进行管理,也进行签名和加密。 org.apereo.cas.configuration.model.core.web.flow.WebflowSessionManagementProperties. 如何配置此属性? |
显示1到1个条目中的1个
上一个1下一个
这样做可能还需要在CAS集群部署中启用粘性会话和/或会话复制。
使用警告!
一般来说,您不需要启用服务器端会话,除非您有一个相当专门的部署,或者需要将数据片段存储到服务器支持的会话对象中的功能。建议您坚持使用默认的客户端会话存储,并且仅在特定CAS行为强制时进行切换。
-
-
-
- Hazelcast会话复制
-
-
如果您不希望使用本机容器的策略进行会话复制,您可以使用CAS对Hazelcast会话复制的支持。
此功能通过以下模块启用:
阿帕奇Maven
学位
BOM - Spring
BOM - Gradle
资源
1 | implementation "org.apereo.cas:cas-server-support-session-hazelcast:${project.'cas.version'}" |
以下设置和属性可从CAS配置曲库获得:
必填
可选
Groovy脚本
第三方
笔记
下面列出的配置设置在CAS配置元数据中标记为必需。此标志表示可能需要设置的存在来激活或影响CAS功能的行为,通常应该进行审查、可能拥有和调整。如果设置被分配了默认值,则不需要严格将设置放入配置副本中,但仍应审查它以确保它符合您的部署期望。
Show entries
搜索:
· cas.webflow.session.server.hazelcast.cluster.core.instance-name= 实例名称。 此设置支持Spring表达式语言。 org.apereo.cas.configuration.model.support.hazelcast.HazelcastCoreClusterProperties. 如何配置此属性? |
· cas.webflow.session.server.hazelcast.cluster.discovery.aws.access-key= AWS访问密钥。 org.apereo.cas.configuration.model.support.hazelcast.discovery.HazelcastAwsDiscoveryProperties. 如何配置此属性? |
· cas.webflow.session.server.hazelcast.cluster.discovery.aws.secret-key= AWS密钥。 org.apereo.cas.configuration.model.support.hazelcast.discovery.HazelcastAwsDiscoveryProperties. 如何配置此属性? |
· cas.webflow.session.server.hazelcast.cluster.discovery.azure.client-id= Azure Active Directory服务主体客户端ID。 org.apereo.cas.configuration.model.support.hazelcast.discovery.HazelcastAzureDiscoveryProperties. 如何配置此属性? |
· cas.webflow.session.server.hazelcast.cluster.discovery.azure.client-secret= Azure Active Directory服务主体客户端机密。 org.apereo.cas.configuration.model.support.hazelcast.discovery.HazelcastAzureDiscoveryProperties. 如何配置此属性? |
显示17个条目中的1到5个
上一页1234下一页
-
-
-
- Redis会话复制
-
-
如果您不希望使用本机容器的策略进行会话复制,您可以使用CAS对Redis会话复制的支持。
此功能通过以下模块启用:
阿帕奇Maven
学位
BOM - Spring
BOM - Gradle
资源
1 | implementation "org.apereo.cas:cas-server-support-session-redis:${project.'cas.version'}" |
以下设置和属性可从CAS配置曲库获得:
第三方
笔记
下面列出的配置设置在CAS配置元数据中被标记为第三方。此标志表示配置设置不受CAS生态系统的控制、拥有或管理,并影响第三方库提供的功能,例如Spring Boot或Spring Cloud到CAS。有关其他信息,您可能必须访问第三方源才能找到更多详细信息。
Show entries
搜索:
· spring.redis.client-name= 如何配置此属性? 弃用状态为ERROR,替换设置为:spring.data.redis.client-name。 |
· spring.redis.client-type= 如何配置此属性? 弃用状态为ERROR,替换设置为:spring.data.redis.client-type。 |
· spring.redis.cluster.max-redirects= 如何配置此属性? 弃用状态为ERROR,带有替换设置:spring.data.redis.cluster.max-redirects。 |
· spring.redis.cluster.nodes= 如何配置此属性? 弃用状态为ERROR,替换设置为:spring.data.redis.cluster.nodes。 |
· spring.redis.connect-timeout= 如何配置此属性? 弃用状态为ERROR,替换设置为:spring.data.redis.connect-timeout。 |
显示39个条目中的1到5个
上一页12345…8下一页
-
-
-
- MongoDb会话复制
-
-
如果您不希望使用本机容器的策略进行会话复制,您可以使用CAS对Mongo会话复制的支持。
此功能通过以下模块启用:
阿帕奇Maven
学位
BOM - Spring
BOM - Gradle
资源
1 | implementation "org.apereo.cas:cas-server-support-session-mongo:${project.'cas.version'}" |
以下设置和属性可从CAS配置曲库获得:
第三方
笔记
下面列出的配置设置在CAS配置元数据中被标记为第三方。此标志表示配置设置不受CAS生态系统的控制、拥有或管理,并影响第三方库提供的功能,例如Spring Boot或Spring Cloud到CAS。有关其他信息,您可能必须访问第三方源才能找到更多详细信息。
Show entries
搜索:
· spring.data.mongodb.additional-hosts= 其他服务器主机。不能使用URI或未指定“主机”进行设置。其他主机将使用默认mongo端口27017。如果要使用其他端口,可以使用“主机:端口”语法。 org.springframework.boot.autoconfigure.mongo.MongoProperties. 如何配置此属性? |
· spring.data.mongodb.authentication-database= 验证库名。 org.springframework.boot.autoconfigure.mongo.MongoProperties. 如何配置此属性? |
· spring.data.mongodb.auto-index-creation= 是否启用自动索引创建。 org.springframework.boot.autoconfigure.mongo.MongoProperties. 如何配置此属性? |
· spring.data.mongodb.database= 数据库名称。在URI中覆盖数据库。 org.springframework.boot.autoconfigure.mongo.MongoProperties. 如何配置此属性? |
· spring.data.mongodb.field-naming-strategy= 要使用的FieldNamingStrategy的完全限定名称。 org.springframework.boot.autoconfigure.mongo.MongoProperties. 如何配置此属性? |
显示19个条目中的1到5个
上一页1234下一页
-
-
-
- JDBC会话复制
-
-
如果您不希望使用本机容器的策略进行会话复制,您可以使用CAS对JDBC会话复制的支持。
此功能通过以下模块启用:
阿帕奇Maven
学位
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-session-jdbc"} |
以下设置和属性可从CAS配置曲库获得:
第三方
笔记
下面列出的配置设置在CAS配置元数据中被标记为第三方。此标志表示配置设置不受CAS生态系统的控制、拥有或管理,并影响第三方库提供的功能,例如Spring Boot或Spring Cloud到CAS。有关其他信息,您可能必须访问第三方源才能找到更多详细信息。
Show entries
搜索:
· spring.datasource.azure.credential.client-certificate-password= 证书文件的密码。 com.azure.spring.cloud.autoconfigure.implementation.passwordless.properties.AzureJdbcPasswordlessProperties. 如何配置此属性? |
· spring.datasource.azure.credential.client-certificate-path= 使用Azure执行服务主体身份验证时要使用的PEM证书文件的路径。 com.azure.spring.cloud.autoconfigure.implementation.passwordless.properties.AzureJdbcPasswordlessProperties. 如何配置此属性? |
· spring.datasource.azure.credential.client-id= 使用Azure执行服务主体身份验证时要使用的客户端ID。 com.azure.spring.cloud.autoconfigure.implementation.passwordless.properties.AzureJdbcPasswordlessProperties. 如何配置此属性? |
· spring.datasource.azure.credential.client-secret= 使用Azure执行服务主体身份验证时使用的客户端机密。 com.azure.spring.cloud.autoconfigure.implementation.passwordless.properties.AzureJdbcPasswordlessProperties. 如何配置此属性? |
· spring.datasource.azure.credential.managed-identity-enabled=false 是否启用托管标识以向Azure进行身份验证。如果为true并且设置了client-id,则将使用客户端ID作为用户分配的托管标识客户端ID。 com.azure.spring.cloud.autoconfigure.implementation.passwordless.properties.AzureJdbcPasswordlessProperties. 如何配置此属性? |
显示221个条目中的1到5个
上一页12345…45下一页
默认情况下,如果初始身份验证请求未识别目标应用程序,则 CAS 将显示通用成功页面。在某些情况下,无需登录特定服务即可登录 CAS 的能力可能被视为功能不当,因为在实践中,很少有用户和机构准备理解、品牌和支持充其量只是为了在不登录任何 CAS 依赖服务的情况下建立 SSO 会话而登录到 CAS 的边缘用例。
因此,CAS 可以选择允许采用者在未显示目标应用程序时不费心提示输入凭据,而是在用户直接访问 CAS 而不指定服务时显示一条消息。
CAS 配置目录中提供了以下设置和属性:
自选
笔记
下面列出的配置设置在 CAS 配置元数据中标记为 Optional(可选)。This标志表示在最终用户 CAS 配置中不需要立即存在该设置,因为分配了默认值,或者该功能的激活不受设置值有条件地控制。换句话说,仅当需要修改默认值或需要打开由设置控制的功能时,才应在配置中包含此字段。
Show entries
搜索:
· cas.sso.services.allow-missing-service-parameter=true 默认情况下,如果初始身份验证请求未识别目标应用程序,CAS 将显示通用成功页面。在某些情况下,无需登录特定服务即可登录 CAS 的能力可能被视为功能不当,因为在实践中,很少有用户和机构准备理解、品牌和支持充其量只是为了在不登录任何 CAS 依赖的服务的情况下建立 SSO 会话而登录 CAS 的边缘用例。 org.apereo.cas.configuration.model.core.sso.SingleSignOnServicesProperties. 如何配置此属性? |
· cas.sso.services.required-service-pattern= 一种正则表达式模式,表示一个应用程序,该应用程序必须先与 CAS 建立会话,然后 CAS 才能允许访问其他应用程序。这是初始的强制性/必需应用程序,用户在访问其他任何位置之前必须开始使用该应用程序。与 CAS 建立会话的服务通常通过从 CAS 接收服务票证来实现此目的。 此设置支持正则表达式模式。[?]. org.apereo.cas.configuration.model.core.sso.SingleSignOnServicesProperties. 如何配置此属性? |
显示 1 到 2 的 2 个条目
上一页1下一页