CAS单点登录(第7版)20.用户界面
如有疑问,请看视频:CAS单点登录(第7版)_在线视频教程-CSDN程序员研修院
1. 用户界面
1.1. 概述
1.1.1. 概述
对 CAS 用户界面 (UI) 进行品牌化涉及编辑 CSS 样式表以及一小部分相对简单的 HTML 包含文件,也称为视图。(可选)您可能还希望修改显示的文本和/或在这些视图上添加其他 JavaScript 效果。
1.1.2. 浏览器支持
CAS 用户界面应该适当且舒适地适合所有主要的浏览器供应商:
l 谷歌浏览器
l Mozilla 火狐浏览器
l 苹果 Safari 浏览器
l Microsoft Edge
l Internet Explorer(仅限 v11)
请注意,某些旧版本的 IE,尤其是 IE 9 及更低版本,可能会给获得正确的 UI 配置带来额外的困难。用于用户界面的库(Bootstrap 和 Material.io)不支持 Internet Explorer 9 或更低版本。
支持的浏览器
此处列出的受支持浏览器是指默认的 CAS 用户界面。可以实施自定义以支持使用覆盖、主题等的其他浏览器。
IE浏览器
要指示 CAS 在兼容模式下呈现 UI,以下内容会自动添加到相关 UI 组件中:
1 |
1.1.3. CSS & JavaScript
有关更多信息,请参阅本指南。
1.1.4. 视图
有关更多信息,请参阅本指南。
1.1.5. 地方化
有关更多信息,请参阅本指南。
1.1.6. 主题
有关更多信息,请参阅本指南。
1.2. CSS & JavaScript
1.2.1. CSS
默认样式都包含在位于
src/main/resources/static/css/cas.css 中的单个文件中。此位置在
cas-theme-default.properties 中设置。默认情况下,CAS 使用 Material.io 库和设计规范作为其用户体验的基础。
例如,如果您想创建自己的 css/my.css file,则需要更新该文件中的 cas.standard.css.file 密钥。
1 2 | cas.standard.css.file=/css/cas.css cas.standard.js.file=/js/cas.js |
请注意,
l 可以定义多个 CSS 或 Javascript 文件,并用逗号分隔。
l 文件的顺序很重要。文件将按照定义的顺序加载。
l 默认情况下,CAS 将始终加载 /css/custom.css 和 /js/custom.js,以允许覆盖和自定义。
1.2.2. 响应式设计
CSS 媒体查询为 CAS 带来了响应式设计功能,这将使采用者能够专注于所有适用设备和平台的一个主题。这些查询在同一个 cas.css 文件中定义。它们遵循 Twitter Bootstrap 断点和网格。
1.2.3. JavaScript
如果你需要添加一些 JavaScript,请随意附加
src/main/resources/static/js/cas.js。
例如,您还可以创建自己的自定义 javascript 文件,并从 scripts.html 中调用它,如下所示:
1 |
如果要为每个服务开发主题,则每个主题还可以在 cas.standard.js.file 设置下指定自定义 cas.js 文件。
最重要的是,CAS 会自动使用以下 Javascript 库:
l JQuery
l 网格 / Flex 实用程序的 Bootstrap
l Material.io
1.2.4. 脚本加载
CAS 提供了一个回调函数,允许在脚本加载完成时通知采用者,这将是执行/加载其他依赖于实际页面内 JQuery 的 Javascript 相关函数的安全时间。
1 2 3 | function jqueryReady() { // Custom Javascript tasks can be carried out now via JQuery... } |
1.2.5. 检查 CAPSLOCK
在键入凭据密码期间打开 CAPSLOCK 密钥时,CAS 将显示一个简短的警告。此检查由 cas.js 文件强制执行。
1.2.6. 浏览器 Cookie 支持
要使 CAS 支持单点登录会话,浏览器必须支持并接受 Cookie。如果浏览器已关闭对 Cookie 的支持,CAS 将通知用户。此行为通过 cas.js 文件进行控制。
1.2.7. 保留锚点片段
锚点/片段可能会在重定向中丢失,因为表单帖子的服务器端处理程序会忽略客户端锚点,除非附加到表单 POST URL。如果您希望经过 CAS 身份验证的应用程序在为书签时能够使用锚点/片段,则需要这样做。默认情况下,CAS 配置为在指定的位置和时间保留锚点片段。您无需再做任何事情。
1.2.7.1. 用于 Javascript/CSS 库的 WebJAR
CAS 应用程序将第三方静态资源打包在 CAS Web 应用程序中,而不是引用 CDN 链接,以便 CAS 可以部署在 Internet 访问受限的网络上。
第三方静态资源打包在 “WebJAR” jar 文件中,并通过 servlet 3.0 功能提供,该功能将 Web 应用程序 jar 中 META-INF/resources 下的任何文件夹与应用程序的 Web 根合并。
1.2.7.2. 构建 WebJAR
您可以在 http://webjars.org 中搜索 webjar。您可以阅读三种风格的 WebJARs,但只要您要使用的 Web 资源存在 NPM 或 Bower 包,就可以为任何版本自动创建 NPM 和 Bower 类型(如果它们尚不存在)。单击 “Add a webjar” 按钮并按照说明进行操作。如果自定义覆盖中的 UI,则部署程序可以将 webjar 作为依赖项添加到其覆盖项目中,并直接在 html 文件中或通过向覆盖项目的 src\main\resources 文件夹中的
common_messages.properties 文件添加条目来引用资源的 URL。
1.3. 视图和模板
1.3.1. 概览
1.3.1.1. 视图
这些视图位于 CAS Web 应用程序内的 templates文件夹中的 WEB-INF\lib\
cas-server-support-thymeleaf-
src/main/resources/templates 文件夹中。通过在 CAS 覆盖项目中的 src/main/resources 下的相同位置,可以覆盖在该模块中找到的任何文件。覆盖的 Gradle 构建脚本包含有助于将资源从 CAS Web 应用程序获取到 CAS 覆盖中的正确位置的任务。
1.3.1.2. 模板
CAS 提供并认可以下用户界面模板,用于各种模块和功能:
Show entries
搜索:
类别 | 名字 | 完整路径 | 所有者 |
acct | casMyAccountProfile.html | /src/main/resources/templates/acct/casMyAccountProfile.html | Thymeleaf |
acct-mgmt | casAccountSignupView.html | /src/main/resources/templates/acct-mgmt/casAccountSignupView.html | Thymeleaf |
acct-mgmt | casAccountSignupViewComplete.html | /src/main/resources/templates/acct-mgmt/casAccountSignupViewComplete.html | Thymeleaf |
acct-mgmt | casAccountSignupViewCompleted.html | /src/main/resources/templates/acct-mgmt/casAccountSignupViewCompleted.html | Thymeleaf |
acct-mgmt | casAccountSignupViewSentInfo.html | /src/main/resources/templates/acct-mgmt/casAccountSignupViewSentInfo.html | Thymeleaf |
adaptive-authn | casRiskAuthenticationBlockedView.html | /src/main/resources/templates/adaptive-authn/casRiskAuthenticationBlockedView.html | Thymeleaf |
adaptive-authn | casRiskAuthenticationVerifiedView.html | /src/main/resources/templates/adaptive-authn/casRiskAuthenticationVerifiedView.html | Thymeleaf |
admin | casAdminLoginView.html | /src/main/resources/templates/admin/casAdminLoginView.html | Thymeleaf |
aup | casAcceptableUsagePolicyView.html | /src/main/resources/templates/aup/casAcceptableUsagePolicyView.html | Thymeleaf |
consent | casConsentView.html | /src/main/resources/templates/consent/casConsentView.html | Thymeleaf |
delegated-authn | casDelegatedAuthnErrorView.html | /src/main/resources/templates/delegated-authn/casDelegatedAuthnErrorView.html | Thymeleaf |
delegated-authn | casDelegatedAuthnSelectionView.html | /src/main/resources/templates/delegated-authn/casDelegatedAuthnSelectionView.html | Thymeleaf |
delegated-authn | casDelegatedAuthnStopWebflow.html | /src/main/resources/templates/delegated-authn/casDelegatedAuthnStopWebflow.html | Thymeleaf |
delegated-authn | casDynamicDiscoveryView.html | /src/main/resources/templates/delegated-authn/casDynamicDiscoveryView.html | Thymeleaf |
error | error.html | /src/main/resources/templates/error.html | Thymeleaf |
显示 1 到 15 的 143 个条目
上一页12345...10下一页
1.3.1.3. 配置
以下设置和属性可从CAS配置曲库获得:
可选
笔记
下面列出的配置设置在CAS配置元数据中被标记为可选。该标志表示在最终用户CAS配置中不需要立即存在该设置,因为分配了默认值或功能的激活不受设置值的有条件控制。换句话说,如果您需要修改默认值或如果您需要打开由设置控制的功能,您应该只在您的配置中包含此字段。
Show entries
搜索:
· cas.view.template-prefixes= 可以找到CAS模板的逗号分隔路径。示例可能是classpath:templates,file:/templates。 org.apereo.cas.configuration.model.core.web.view.ViewProperties. 如何配置此属性? |
显示1到1个条目中的1个
上一个1下一个
1.3.1.4. 访问应用程序前的警告
CAS 能够在用户重定向到服务之前发出警告。这样,每当应用程序使用 CAS 登录时,用户都会收到通知。(如果他们不选择警告,则在访问成功依赖现有 CAS 单点登录会话的应用程序时,他们可能不会看到任何 CAS 屏幕。一些 CAS 采用者删除了 CAS 登录视图中的“警告”复选框,并且不提供这种正在进行单点登录的插页式建议。
1 2 3 4 5 6 7 8 | ... name="warn" value="true" th:accesskey="#{screen.welcome.label.warn.accesskey}" type="checkbox" /> ... |
1.3.2. Thymeleaf
1.3.2.1. 用户界面 - Thymeleaf
CAS 使用 Thymeleaf 作为其标记渲染引擎。每个模板都由layout.html模板文件装饰,该文件为模板的内容提供布局结构。为在多个模板之间重复使用而优化的单个组件存储在
src/main/resources/templates/fragments 文件夹中,并由
src/main/resources/templates 中的模板引用。
有关其用法和语法的更多信息,请参阅 Lymeleaf 文档。
CAS 配置目录中提供了以下设置和属性:
自选
笔记
下面列出的配置设置在 CAS 配置元数据中标记为 Optional(可选)。This标志表示在最终用户 CAS 配置中不需要立即存在该设置,因为分配了默认值,或者该功能的激活不受设置值有条件地控制。换句话说,仅当需要修改默认值或需要打开由设置控制的功能时,才应在配置中包含此字段。
Show entries
搜索:
· spring.thymeleaf.cache=true 是否启用模板缓存。 org.springframework.boot.autoconfigure.thymeleaf.ThymeleafProperties. 如何配置此属性? |
· spring.thymeleaf.check-template-location=true 是否检查 templates 位置是否存在。 org.springframework.boot.autoconfigure.thymeleaf.ThymeleafProperties. 如何配置此属性? |
· spring.thymeleaf.check-template=true 是否在渲染模板之前检查模板是否存在。 org.springframework.boot.autoconfigure.thymeleaf.ThymeleafProperties. 如何配置此属性? |
· spring.thymeleaf.enable-spring-el-compiler=false 在 SpringEL 表达式中启用 SpringEL 编译器。 org.springframework.boot.autoconfigure.thymeleaf.ThymeleafProperties. 如何配置此属性? |
· spring.thymeleaf.enabled=true 是否为 Web 框架启用 Thymeleaf 视图解析。 org.springframework.boot.autoconfigure.thymeleaf.ThymeleafProperties. 如何配置此属性? |
显示 1 到 5 的 19 个条目
上一页1234下一页
1.3.3. 外部视图
1.3.3.1. 用户界面 - 外部视图
视图也可以有条件地和单独地在 Web 应用程序外部化,前提是通过 CAS 设置提供外部路径。如果在外部化路径中找不到视图样板文件,则 CAS 附带的默认文件将用作回退。
也可以使用 CAS 设置中的外部 URL 找到视图,该 URL 负责在响应中生成完整的视图正文。此 URL 端点将在其请求中接收可用的请求标头以及以下标头:
表头 |
owner |
template |
resource |
theme如果可用) |
locale(如果可用) |
在成功获得 200 状态结果后,响应正文应包含 CAS 将呈现的视图。
CAS 配置目录中提供了以下设置和属性:
必填
自选
笔记
下面列出的配置设置在 CAS 配置元数据中标记为 Required。此标志表示可能需要该设置的存在才能激活或影响 CAS 功能的行为,并且通常应进行审查、可能拥有和调整。如果为该设置分配了默认值,则无需严格将该设置放在配置副本中,但仍应对其进行检查以确保它符合您的部署预期。
Show entries
搜索:
· cas.view.rest.url= 用于联系和检索属性的终端节点 URL。 此设置支持 Spring 表达式语言。 org.apereo.cas.configuration.model.core.web.view.RestfulViewProperties. 如何配置此属性? |
显示 1 到 1 的 1 个条目
上一页1下一页
1.3.4. 自定义字段
1.3.4.1. 用户界面 - 自定义字段
CAS 允许通过包含其他字段来动态扩展登录表单,以供用户填写。这些字段使用设置教给 CAS,然后绑定到身份验证流,并提供给所有希望使用上述字段施加其他进程和规则的身份验证处理程序。
CAS 配置目录中提供了以下设置和属性:
自选
笔记
下面列出的配置设置在 CAS 配置元数据中标记为 Optional(可选)。This标志表示在最终用户 CAS 配置中不需要立即存在该设置,因为分配了默认值,或者该功能的激活不受设置值有条件地控制。换句话说,仅当需要修改默认值或需要打开由设置控制的功能时,才应在配置中包含此字段。
Show entries
搜索:
· cas.view.custom-login-form-fields.[key].converter= 用于转换绑定属性值的自定义转换器的 ID。 org.apereo.cas.configuration.model.core.web.view.CustomLoginFieldViewProperties. 如何配置此属性? |
· cas.view.custom-login-form-fields.[key].message-bundle-key= 在消息包中找到的此字段的键用于在 CAS 视图中显示标签/文本。 org.apereo.cas.configuration.model.core.web.view.CustomLoginFieldViewProperties. 如何配置此属性? |
· cas.view.custom-login-form-fields.[key].required= 此字段是否必须具有值。 org.apereo.cas.configuration.model.core.web.view.CustomLoginFieldViewProperties. 如何配置此属性? |
显示 1 到 3 个条目中的 3 个
上一页1下一页
1.3.5. CAS协议视图
1.3.5.1. CAS v1
1.3.5.1.1. 用户界面 - CAS v1 视图
当客户端应用程序使用 CAS v1 协议与 CAS 交互时,您可以控制响应输出。
CAS 配置目录中提供了以下设置和属性:
自选
笔记
下面列出的配置设置在 CAS 配置元数据中标记为 Optional(可选)。This标志表示在最终用户 CAS 配置中不需要立即存在该设置,因为分配了默认值,或者该功能的激活不受设置值有条件地控制。换句话说,仅当需要修改默认值或需要打开由设置控制的功能时,才应在配置中包含此字段。
Show entries
搜索:
· cas.view.cas1.attribute-renderer-type=DEFAULT 指示应如何设置最终验证响应中的属性的格式。可用值如下: DEFAULT使用 CAS 协议建议呈现属性。 VALUES_PER_LINE:每行的内联属性值。 org.apereo.cas.configuration.model.core.web.view.Cas10ViewProperties. 如何配置此属性? |
显示 1 到 1 的 1 个条目
上一页1下一页
1.3.5.2. CAS v2
1.3.5.2.1. 用户界面 - CAS v2 视图
当客户端应用程序使用 CAS v2 协议与 CAS 交互时,您可以控制响应输出。
CAS 配置目录中提供了以下设置和属性:
自选
笔记
下面列出的配置设置在 CAS 配置元数据中标记为 Optional(可选)。This标志表示在最终用户 CAS 配置中不需要立即存在该设置,因为分配了默认值,或者该功能的激活不受设置值有条件地控制。换句话说,仅当需要修改默认值或需要打开由设置控制的功能时,才应在配置中包含此字段。
Show entries
搜索:
· cas.view.cas2.failure=protocol/2.0/casServiceValidationFailure CAS3 失败视图 Bean 的相对位置。 org.apereo.cas.configuration.model.core.web.view.Cas20ViewProperties. 如何配置此属性? |
· cas.view.cas2.proxy.failure=protocol/2.0/casProxyFailureView CAS2 代理故障视图 Bean 的相对位置。 org.apereo.cas.configuration.model.core.web.view.Cas20ProxyViewProperties. 如何配置此属性? |
· cas.view.cas2.proxy.success=protocol/2.0/casProxySuccessView CAS2 代理成功视图 Bean 的相对位置。 org.apereo.cas.configuration.model.core.web.view.Cas20ProxyViewProperties. 如何配置此属性? |
· cas.view.cas2.success=protocol/2.0/casServiceValidationSuccess CAS2 成功视图 Bean 的相对位置。 org.apereo.cas.configuration.model.core.web.view.Cas20ViewProperties. 如何配置此属性? |
· cas.view.cas2.v3-forward-compatible=true v2 协议支持是否应该向前兼容,以像 v3 一样工作并匹配其响应,主要用于属性发布。 org.apereo.cas.configuration.model.core.web.view.Cas20ViewProperties. 如何配置此属性? |
显示 1 到 5 个条目中的 5 个
上一页1下一页
1.3.5.3. CAS v3
1.3.5.3.1. 用户界面 - CAS v3 视图
当客户端应用程序使用 CAS v3 协议与 CAS 交互时,您可以控制响应输出。
CAS 配置目录中提供了以下设置和属性:
自选
笔记
下面列出的配置设置在 CAS 配置元数据中标记为 Optional(可选)。This标志表示在最终用户 CAS 配置中不需要立即存在该设置,因为分配了默认值,或者该功能的激活不受设置值有条件地控制。换句话说,仅当需要修改默认值或需要打开由设置控制的功能时,才应在配置中包含此字段。
Show entries
搜索:
· cas.view.cas3.attribute-renderer-type=DEFAULT 指示应如何设置最终验证响应中的属性的格式。可用值如下: DEFAULT使用 CAS 协议建议呈现属性。 INLINE作为 XML 属性的内联属性名称/值。 org.apereo.cas.configuration.model.core.web.view.Cas30ViewProperties. 如何配置此属性? |
· cas.view.cas3.failure=protocol/3.0/casServiceValidationFailure CAS3 成功验证 Bean 的相对位置。 org.apereo.cas.configuration.model.core.web.view.Cas30ViewProperties. 如何配置此属性? |
· cas.view.cas3.success=protocol/3.0/casServiceValidationSuccess CAS3 成功验证 Bean 的相对位置。 org.apereo.cas.configuration.model.core.web.view.Cas30ViewProperties. 如何配置此属性? |
显示 1 到 3 个条目中的 3 个
上一页1下一页
1.4. 本地化
1.4.1. 本地化
CAS Web 应用程序包括许多本地化的消息文件:
l 英语(美式)
l 西班牙语
l 法语
l 俄语
l Dutch (荷兰)
l 英语 (瑞典语)
l 意大利语
l 乌尔都语
l 中文 (简体)
l 德语 (Deutsch)
l 日语
l 克罗地亚语
l 捷克语
l 斯洛文尼亚语
l 波兰语
l 葡萄牙语 (巴西)
l 土耳其语
l 要使
l 阿拉伯语
为了“调用”UI 的特定语言,可以向 /login 端点传递一个 locale 参数,如下所示:
1 | https://cas.server.org/login?locale=it |
使用警告!
请注意,并非所有语言在 CAS 服务器版本中都是完整和准确的,因为翻译完全取决于社区的贡献。有关本地化消息的准确完整列表,请始终参阅英语捆绑包。
1.4.2. 配置
所有消息包都标记在 src/main/resources 的 messages_xx.properties 文件下。默认语言包用于英语,因此称为 messages.properties。如果有任何自定义消息需要呈现到视图中,它们也可以在
custom_messages.properties 文件下格式化。
如果在激活的资源包中找不到代码,则将逐字使用代码本身。
1.4.2.1. 本地化
CAS 配置目录中提供了以下设置和属性:
自选
笔记
下面列出的配置设置在 CAS 配置元数据中标记为 Optional(可选)。This标志表示在最终用户 CAS 配置中不需要立即存在该设置,因为分配了默认值,或者该功能的激活不受设置值有条件地控制。换句话说,仅当需要修改默认值或需要打开由设置控制的功能时,才应在配置中包含此字段。
Show entries
搜索:
· cas.locale.cookie.domain= Cookie 域。指定应在其中显示此 Cookie 的域。域名的形式由 RFC 2965 指定。域名以点 (.foo.com) 开头,表示该 Cookie 对指定域名系统 (DNS) 区域中的服务器可见(例如,www.foo.com,但不是 a.b.foo.com)。默认情况下,Cookie 仅返回给发送它们的服务器。 org.apereo.cas.configuration.model.core.web.LocaleCookieProperties. 如何配置此属性? |
· cas.locale.cookie.http-only=true 如果此 Cookie 包含 HttpOnly 属性,则为 true。这意味着脚本引擎(如 javascript)不应访问 cookie。 org.apereo.cas.configuration.model.core.web.LocaleCookieProperties. 如何配置此属性? |
· cas.locale.cookie.max-age=-1 Cookie 的最长期限,以秒为单位指定。默认情况下,-1 表示 Cookie 将一直存在,直到浏览器关闭。正值表示 Cookie 将在该秒数后过期。请注意,该值是 Cookie 过期的最长期限,而不是 Cookie 的当前期限。负值表示 Cookie 不会永久存储,并且将在 Web 浏览器退出时删除。零值会导致 Cookie 被删除。 此设置支持java.time.Duration 语法 [?]。 org.apereo.cas.configuration.model.core.web.LocaleCookieProperties. 如何配置此属性? |
· cas.locale.cookie.name= Cookie 名称。构造具有指定名称和值的 Cookie。该名称必须符合 RFC 2965。这意味着它只能包含 ASCII 字母数字字符,不能包含逗号、分号或空格,也不能以 $ 字符开头。Cookie 的名称在创建后无法更改。默认情况下,Cookie 是根据 RFC 2965 Cookie 规范创建的。Cookie 名称由 CAS 在运行时自动计算,分配,通常无需自定义名称或为其分配不同的值,除非有特殊用例需要更改。 org.apereo.cas.configuration.model.core.web.LocaleCookieProperties. 如何配置此属性? |
· cas.locale.cookie.path= Cookie 路径。指定客户端应将 Cookie 返回到的 Cookie 的路径。该 Cookie 对您指定的目录中的所有页面以及该目录的子目录中的所有页面都可见。Cookie 的路径必须包含设置 Cookie 的 Servlet,例如 /catalog,它使 Cookie 对 /catalog 下服务器上的所有目录可见。有关为 cookie 设置路径名的更多信息,请参阅 RFC 2965(可在 Internet 上找到)。 org.apereo.cas.configuration.model.core.web.LocaleCookieProperties. 如何配置此属性? |
显示 1 到 5 的 10 个条目
上一页12下一页
1.4.2.2. 消息包
CAS 配置目录中提供了以下设置和属性:
自选
笔记
下面列出的配置设置在 CAS 配置元数据中标记为 Optional(可选)。This标志表示在最终用户 CAS 配置中不需要立即存在该设置,因为分配了默认值,或者该功能的激活不受设置值有条件地控制。换句话说,仅当需要修改默认值或需要打开由设置控制的功能时,才应在配置中包含此字段。
Show entries
搜索:
· cas.message-bundle.base-names= 表示此消息包的基本名称的字符串列表。设置一个基名称数组,每个基名称都遵循不指定文件扩展名或语言代码的基本 ResourceBundle 约定。资源位置格式取决于特定的MessageSource实现。支持常规和 XMl 属性文件:例如,“messages”会找到 “messages.properties”、“messages_en.properties” 等排列方式,以及 “messages.xml”、“messages_en.xml” 等。在解析消息代码时,将按顺序检查关联的资源包。请注意,由于顺序查找,先前资源包中的消息定义将覆盖后面的资源包中的消息定义。 org.apereo.cas.configuration.model.core.web.MessageBundleProperties. 如何配置此属性? |
· cas.message-bundle.cache-seconds=PT180S 缓存大小。 此设置支持java.time.Duration 语法 [?]。 org.apereo.cas.configuration.model.core.web.MessageBundleProperties. 如何配置此属性? |
· cas.message-bundle.common-names= 姓氏公用名中的条目将覆盖姓氏的第一个值(与消息包中使用的 baseNames 相反)。 org.apereo.cas.configuration.model.core.web.MessageBundleProperties. 如何配置此属性? |
· cas.message-bundle.encoding= 消息束字符编码。 org.apereo.cas.configuration.model.core.web.MessageBundleProperties. 如何配置此属性? |
· cas.message-bundle.fallback-system-locale=false 该标志,用于控制在未明确指定区域设置时是否回退到默认系统区域设置。设置如果未找到特定 Locale 的文件,是否回退到系统 Locale。如果关闭此选项,则唯一的回退将是默认文件(例如,basename “messages” 的 “messages.properties”) 。回退到系统 Locale 是 java.util.ResourceBundle 的默认行为。但是,这在应用程序服务器环境中通常是不可取的,因为系统 Locale 与应用程序完全无关:在这种情况下,将此标志设置为 false。 org.apereo.cas.configuration.model.core.web.MessageBundleProperties. 如何配置此属性? |
显示 1 到 5 的 6 个条目
上一页12下一页
1.4.3. 每项服务
语言区域设置也可以根据每个服务确定:
1 2 3 4 5 6 7 | { "@class" : "org.apereo.cas.services.CasRegisteredService", "serviceId" : "^https://www.example.org", "name" : "MyTheme", "locale" : "de", "id" : 1 } |
区域设置名称可以使用 Spring 表达式语言语法。
1.5. 主题
1.5.1. 概览
1.5.1.1. 主题 - 用户界面自定义
随着 Service Management 应用程序的推出,部署人员现在能够根据不同的服务切换主题。例如,您可能希望为教职员工应用程序和学生应用程序使用不同的登录屏幕(不同的样式),或者您希望为白天和夜间显示两种布局。本文档可以帮助您完成基本设置以实现此目的。
主题 | 描述 |
静态的 | 请参阅本指南。 |
视图 | 请参阅本指南。 |
收集 | 请参阅本指南。 |
Groovy | 请参阅本指南。 |
REST | 请参阅本指南。 |
1.5.2. 静态
1.5.2.1. 静态主题
CAS 配置为根据 Service Registry 中给定注册服务的 theme 属性来装饰视图。通过此方法激活的主题仍将保留 CAS 的默认视图,但会将 CSS 和 Javascript 等装饰应用于视图。视图的物理结构不能通过此方法修改。
CAS 配置目录中提供了以下设置和属性:
自选
Groovy 脚本
笔记
下面列出的配置设置在 CAS 配置元数据中标记为 Optional(可选)。This标志表示在最终用户 CAS 配置中不需要立即存在该设置,因为分配了默认值,或者该功能的激活不受设置值有条件地控制。换句话说,仅当需要修改默认值或需要打开由设置控制的功能时,才应在配置中包含此字段。
Show entries
搜索:
· cas.theme.default-theme-name=cas-theme-default 此 CAS 部署的默认主题名称。默认的主题文件 org.apereo.cas.configuration.model.support.themes.ThemeProperties. 如何配置此属性? |
· cas.theme.description= 此主题的描述,用于描述其用途 如何配置此属性? |
· cas.theme.name= 此主题的名称用于各种标题/说明。 如何配置此属性? |
· cas.theme.param-name=theme 用于切换主题的参数名称。 org.apereo.cas.configuration.model.support.themes.ThemeProperties. 如何配置此属性? |
显示 1 到 4 的 4 个条目
上一页1下一页
要创建主题,请按照以下说明操作:
添加一个 [theme_name].properties 到 src/main/resources 文件夹的根目录。此文件的内容可能包含以下设置:
设置 | 描述 | 价值 |
cas.standard.css.file | 主题 CSS 文件的路径;多个文件可以用逗号分隔。 | /themes/[theme_name]/css/cas.css |
cas.standard.js.file | 主题 Javascript 文件的路径;多个文件可以用逗号分隔。 | /themes/[theme_name]/js/js/css |
cas.standard.fragments.head | 在 custom.html fragment 中找到custom.html fragment 的名称,包含在 layout 标记中 | 空白 |
cas.logo.file | 通过通用布局显示的主题 logo 的路径。 | /images/logo.png |
cas.drawer-menu.enabled | 决定是否应显示抽屉菜单。 | true |
cas.theme.name | 各种标题/说明中使用的主题名称。 | Example Theme |
cas.theme.description | 各种标题/说明中使用的主题描述。 | Example Theme Description |
cas.pm-links.enabled | 是否应显示密码管理/重置链接。 | true |
cas.login-form.enabled | 何时应显示 CAS 登录表单。 | true |
cas.notifications-menu.enabled | 启用并显示通知菜单。 | true |
cas.favicon.file | 主题网站图标文件的路径。 | /themes/example/images/favicon.ico |
cas.hero-banner.file | 登录表单上“hero”样式图像/徽标的路径。 | /themes/example/images/hero.png |
cas.js.core.enabled | 是否应包含核心/默认 Javascript 库。 | true |
cas.css.core.enabled=true | 是否应包含核心/默认 CSS 库。 | true |
cas.successful-login.display-attributes | 登录时是否应显示属性/应用程序。 | true |
cas.public-workstation.enabled | 用户是否可以在登录时指定公共工作站选项。 | false |
cas.warn-on-redirect.enabled | 在重定向到应用程序之前是否应警告用户。 | false |
cas.browser-storage.show-progress | 是否在读取/写入浏览器存储数据时显示进度。 | true |
cas.footer.show | 是否显示 CAS 页脚。 | true |
cas.footer.show-version | 是否在页脚中显示 CAS 版本详细信息.. | true |
l 创建目录
src/main/resources/static/themes/[theme_name]将特定于主题的 cas.css 和 cas.js 放在 css 和 js 的相应目录中。
l 在 theme 属性下为服务定义指定 [theme_name]
1 2 3 4 5 6 7 | { "@class" : "org.apereo.cas.services.CasRegisteredService", "serviceId" : "^https://www.example.org", "name" : "MyTheme", "theme" : "[theme_name]", "id" : 1000 } |
值可以使用 Spring 表达式语言语法。
1.5.3. 视图
1.5.3.1. 主题视图 - 用户界面自定义
CAS还可以利用服务的关联主题来选择性地选择将使用哪组UI视图来生成标准视图(login/casLoginView.html等)。这在针对不同类型受众的主题的页面集在结构上完全不同的情况下特别有用,使用简单的主题来增强默认视图是不切实际的。在这种情况下,可能需要新的视图页面。
默认情况下,与特定主题关联的视图应在以下位置找到:
src/main/resources/templates/
/etc/cas/templates/sample/。
以下设置和属性可从CAS配置曲库获得:
可选
笔记
下面列出的配置设置在CAS配置元数据中被标记为可选。该标志表示在最终用户CAS配置中不需要立即存在该设置,因为分配了默认值或功能的激活不受设置值的有条件控制。换句话说,如果您需要修改默认值或如果您需要打开由设置控制的功能,您应该只在您的配置中包含此字段。
Show entries
搜索:
· cas.view.template-prefixes= 可以找到CAS模板的逗号分隔路径。示例可能是classpath:templates,file:/templates。 org.apereo.cas.configuration.model.core.web.view.ViewProperties. 如何配置此属性? |
显示1到1个条目中的1个
上一个1下一个
1.5.3.2. 配置
添加一个 [theme_name].properties 到 src/main/resources 文件夹的根目录。此文件的内容应与以下内容匹配:
1 2 | cas.standard.css.file=/themes/[theme_name]/css/cas.css cas.standard.js.file=/themes/[theme_name]/js/cas.js |
根据主题 ID(即
src/main/resources/templates/
在 theme 属性下为服务定义指定主题的名称。
1.5.4. 收藏
1.5.4.1. 主题集合 - 用户界面自定义
CAS 提供了一个模块,该模块提供了许多现成的主题。每个主题的目的是在用户界面修改和示例方面考虑常见用例并提供常见用例,并尝试自动执行大部分配置。
通过在 WAR 覆盖中包含以下模块来启用支持:
Apache Maven
Gradle
BOM - Spring
BOM - Gradle
资源
1 2 3 4 5 6 7 8 9 10 | dependencies { /* The following platform references should be included automatically and are listed here for reference only. implementation enforcedPlatform("org.apereo.cas:cas-server-support-bom:${project.'cas.version'}") implementation platform(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES) */ implementation "org.apereo.cas:cas-server-support-themes-collection"} |
本模块提供了以下主题,可以将其分配给服务定义:
主题 | 描述 |
example | 一个结合了自定义 CSS、Javascript 和视图的参考示例主题 |
twbs | 使用 Bootstrap for CSS 和 Javascript 的基本主题 |
上面的主题集合也可以用作如何使用自定义 CSS、Javascript 以及关联的视图和片段定义主题的参考示例。
1.5.5. Groovy
1.5.5.1. Groovy 主题 - 用户界面自定义
如果定义了多个主题,则可能需要动态确定给定服务定义的主题。为此,您可以通过自己设计的 Groovy 脚本计算最终的主题名称。分配给服务定义的主题需要指向脚本的位置:
1 2 3 4 5 6 7 | { "@class" : "org.apereo.cas.services.CasRegisteredService", "serviceId" : "^https://www.example.org", "name" : "MyTheme", "theme" : "file:///etc/cas/config/themes.groovy", "id" : 1000} |
脚本本身可以设计为:
1 2 3 4 5 6 7 8 9 | import java.util.* def run(final Object... args) { def (service,registeredService,queryStrings,headers,logger) = args // Determine theme ... return null} |
返回 null 或空白将使 CAS 切换到默认主题。可以将以下参数传递给 Groovy 脚本:
参数 | 描述 |
service | 表示请求服务的对象。 |
registeredService | 表示注册表中匹配的已注册服务的对象。 |
queryStrings | 在请求中找到的所有查询字符串的文本表示形式(如果有)。 |
headers | Map请求中找到的所有请求标头及其值的映射(如果有)。 |
logger | 负责发出日志消息的对象,例如 logger.info(...) |
要准备 CAS 以支持 Apache Groovy 并与之集成,请查看本指南。
1.5.6. REST
1.5.6.1. RESTful 主题 - 用户界面自定义
与上述选项有点类似,您可以通过自己设计的 REST 端点计算最终的主题名称。分配给服务定义的主题需要指向 REST API 的位置。端点必须设计为通过 GET 请求接受/处理 application/json。返回的状态代码 200 允许 CAS 读取响应的正文以确定主题名称。空响应正文将使 CAS 切换到默认主题。
1 2 3 4 5 6 7 | { "@class" : "org.apereo.cas.services.CasRegisteredService", "serviceId" : "^https://www.example.org", "name" : "MyTheme", "theme" : "https://themes.example.org", "id" : 1000} |
可以将以下参数传递给 REST 端点:
参数 | 描述 |
service | 请求服务标识符。 |
1.6. Webflow 装饰
1.6.1. Webflow 装饰
有时,您可能需要修改 CAS webflow 以包含其他数据,这些数据通常从外部资源和终端节点获取,这些数据也可能被视为敏感资源和终端节点,并且可能需要凭据才能访问。示例包括在 CAS 登录屏幕上显示公告或其他类型的动态数据。您当然可以扩展 webflow,将其他状态和操作包含在登录流中,以调用终端节点和数据源来获取数据。一个更简单的选择是让 CAS 通过访问您的 REST 端点等来自动装饰 webflow,并处理内部 webflow 配置。当 CAS 开始渲染登录视图时,会专门调用此类装饰器,同时保留将来装饰 webflow 其他部分的权利。
请注意,装饰器只会将数据注入到 webflow 上下文中,这些数据稍后可用于 CAS 视图,等等。一旦数据可用,您仍然有责任使用该数据在适当的视图中正确显示它并正确设置其样式。
用法
请记住,放入 webflow 上下文中的对象和数据必须始终是 Serializable 的。未通过序列化要求的 Complexobjects 和数据结构很可能会中断流程。
1.6.2. 装饰器
可以使用以下装饰器:
选择 | 参考 |
Groovy | 请参阅本指南。 |
REST | 请参阅本指南。 |
请注意,装饰器通常在 webflow 运行时执行特定操作之前执行,并且它们几乎总是针对所有 webflow 操作执行,而不管拥有的流如何。这样,如有必要,您可以选择使用其他数据装饰所有 CAS Web 流和子流,并且您不仅限于装饰登录流或登录页面。
1.6.3. 自定义
可以使用@Bean以下将在 @AutoConfiguration 类中注册的 webflow 装饰器来设计 webflow 装饰器并将其注入 CAS 中:
1 2 3 4 | @Beanpublic WebflowDecorator myWebflowDecorator() { return new MyWebflowDecorator();} |
您的配置类需要向 CAS 注册。有关更多详细信息,请参阅本指南。
......