首页/新闻资讯/正文详情

Apereo CAS OpenID Connect ID Token 过期策略配置指南:全局属性与按应用定制

发布时间:2026/9/25 17:46:50 来源:云帆数科 栏目:资讯中心
Apereo CAS OpenID Connect ID Token 过期策略配置指南:全局属性与按应用定制
后端认证鉴权单点登录【免费下载链接】casApereo CAS - Identity Single Sign On for all earthlings and beyond.项目地址https://gitcode.com/gh_mirrors/ca/cas点击查看免费下载导读本文围绕 Apereo CAS 中 OpenID ConnectOIDC协议 ID Token 的过期策略展开讲解如何通过 CAS 配置属性控制 ID Token 的默认生命周期以及如何在注册服务Registered Service级别为特定应用覆盖默认过期时间。文章既包含可直接落地的 JSON 服务定义与application.properties/application.yml配置示例也结合当前仓库源码support/cas-server-support-oidc-core-api剖析 ID Token 过期时间的计算链路帮助读者掌握从全局默认到单应用细粒度控制的完整方案。OIDC Token 过期策略与 OAuth 的继承关系CAS 中 OIDC 令牌的过期策略由 CAS 设置和属性控制这些设置与 OAuth 协议 中定义的令牌过期策略基本一致例如 OAuth 的授权码Code、访问令牌Access Token、刷新令牌Refresh Token等均有独立的过期配置。OIDC ID Token 作为 JWT 形式的身份令牌其exp过期时间声明同样受过期策略约束。除全局属性外过期策略还可以针对每个注册到 CAS 的应用Registered Service单独定义。也就是说OIDC 应用可以使用 CAS 全局默认的 ID Token 过期时间在服务注册定义中显式覆盖默认值实现按应用的差异化过期策略。全局 ID Token 过期属性ID Token 的全局过期行为由cas.authn.oidc.id-token前缀下的属性控制。这些属性由仓库中的 OidcIdTokenProperties 类定义核心参数如下属性键默认值说明cas.authn.oidc.id-token.max-time-to-live-in-secondsPT8HID Token 的硬超时时间DurationCapable到期后令牌立即失效。支持 ISO-8601 时长格式如PT60S、PT8H。cas.authn.oidc.id-token.include-id-token-claimstrue是否强制在 ID Token 中包含 scope 请求的 Claims如profile、email、address、phone。默认true仅为向后兼容规范要求按response_type决定 Claims 存放位置未来版本可能移除或变更该行为建议谨慎使用。cas.authn.oidc.id-token.generate-for-jwt-bearer-grant-typefalse是否在 JWT Bearer 授权类型下生成 ID Token。cas.authn.oidc.id-token.collector-script—指向外部脚本文件SpringResourceProperties允许以脚本方式收集 ID Token。配置示例在application.properties中cas.authn.oidc.id-token.max-time-to-live-in-secondsPT8H在application.yml中cas: authn: oidc: id-token: max-time-to-live-in-seconds: PT8H全局属性的底层实现从源码结构看OidcIdTokenExpirationPolicyBuilder 负责把全局配置转化为票证过期策略val timeout Beans.newDuration(casProperties.getAuthn().getOidc().getIdToken().getMaxTimeToLiveInSeconds()); return new HardTimeoutExpirationPolicy(timeout.toSeconds());即全局默认值被转换为HardTimeoutExpirationPolicy硬超时策略ID Token 在max-time-to-live-in-seconds指定的时长之后强制过期。按应用定制 ID Token 过期策略Per Service当某个应用的 ID Token 过期策略需要偏离默认全局配置时可以为该注册服务定义idTokenExpirationPolicy属性块。候选服务必须以org.apereo.cas.services.OidcRegisteredService类型注册示例 JSON 如下{ class : org.apereo.cas.services.OidcRegisteredService, clientId: clientid, clientSecret: clientSecret, serviceId : ^(https|imaps)://redirect-uri.*, name : Service, id : 1, idTokenExpirationPolicy: { class: org.apereo.cas.oidc.services.DefaultRegisteredServiceOidcIdTokenExpirationPolicy, timeToKill: PT60S } }字段说明class服务类型必须为org.apereo.cas.services.OidcRegisteredServiceclientId/clientSecretOIDC 应用的客户端凭据serviceId正则表达式用于匹配回调重定向 URI如^(https|imaps)://redirect-uri.*name服务名称id服务在注册表中的唯一数值 IDidTokenExpirationPolicy覆盖该应用 ID Token 过期时间的策略块其中class固定为org.apereo.cas.oidc.services.DefaultRegisteredServiceOidcIdTokenExpirationPolicytimeToKill使用 ISO-8601 时长格式示例PT60S表示 60 秒后 ID Token 过期。按应用策略的源码实现idTokenExpirationPolicy的模型类为 DefaultRegisteredServiceOidcIdTokenExpirationPolicy实现RegisteredServiceOidcIdTokenExpirationPolicy接口仅包含一个DurationCapable类型的timeToKill字段DurationCapable private String timeToKill;ID Token 实际写入exp声明的逻辑位于 OidcIdTokenGeneratorService.buildExpirationClaimval expirationPolicy getConfigurationContext().getIdTokenExpirationPolicy().buildTicketExpirationPolicy(); val timeoutInSeconds Optional.ofNullable(registeredService.getIdTokenExpirationPolicy()) .map(RegisteredServiceOidcIdTokenExpirationPolicy::getTimeToKill) .filter(StringUtils::isNotBlank) .map(ttl - Beans.newDuration(ttl).toSeconds()) .orElseGet(expirationPolicy::getTimeToLive); LOGGER.debug(ID token expiration policy set to expire the ID token in [{}], timeoutInSeconds); val expirationDate NumericDate.now(); expirationDate.addSeconds(timeoutInSeconds); claims.setExpirationTime(expirationDate);从代码可以确认以下优先级规则若注册服务配置了idTokenExpirationPolicy.timeToKill且非空字符串则使用该值作为 ID Token 的存活秒数否则回退到全局默认过期策略即HardTimeoutExpirationPolicy基于cas.authn.oidc.id-token.max-time-to-live-in-seconds计算出的值exp声明在令牌签发时刻NumericDate.now()基础上累加上述秒数生成。测试验证仓库测试用例 OidcIdTokenGeneratorServiceTests 中直接验证了按应用覆盖过期策略的行为见该文件中registeredService.setIdTokenExpirationPolicy(new DefaultRegisteredServiceOidcIdTokenExpirationPolicy(PT60S))的用法在生成 ID Token 后通过oidcTokenSigningAndEncryptionService.decode(idToken.token(), Optional.of(registeredService))解码并断言 Claims印证了idTokenExpirationPolicy会被 OIDC 服务定义真正加载并作用于 ID Token 生成流程。常见问题与注意事项格式必须合法timeToKill与max-time-to-live-in-seconds均为DurationCapable类型需使用 ISO-8601 时长如PT10S、PT60S、PT8H非法值会在启动或令牌生成阶段被解析失败。仅对 OIDC 服务生效按应用策略只适用于class为org.apereo.cas.services.OidcRegisteredService的应用普通 OAuth 应用应参考 OAuth Token 过期策略文档 使用codeExpirationPolicy、accessTokenExpirationPolicy等对应策略块。优先级单应用配置优先于全局配置未配置timeToKill时自动回落至全局默认。ID Token 与授权码流程若授权请求不含openidscopeCAS 不会生成 ID Token见OidcIdTokenGeneratorService.generate中的检查逻辑过期策略自然也不会生效。小结本文完整覆盖了 CAS OIDC ID Token 过期策略的两种配置维度通过cas.authn.oidc.id-token全局属性设定默认生命周期以及通过注册服务 JSON 中的idTokenExpirationPolicy实现按应用定制。结合 OidcIdTokenProperties、OidcIdTokenExpirationPolicyBuilder 与 OidcIdTokenGeneratorService 的源码佐证读者可以在实际部署中直接套用上述配置并通过解码后的exp声明验证效果。赞分享后端认证鉴权单点登录【免费下载链接】casApereo CAS - Identity Single Sign On for all earthlings and beyond.项目地址https://gitcode.com/gh_mirrors/ca/cas点击查看免费下载相关推荐Apereo CAS OAuth 认证 Token 过期策略全局配置、按应用定制与源码实现解析Apereo CAS OAuth 认证 Token 过期策略全局配置、按应用定制与源码实现解析 本文围绕 Apereo CAS 中 OAuth 认证的 Tok后端认证鉴权单点登录Apereo CAS OpenID Connect 属性定义OidcAttributeDefinition深入指南Apereo CAS OpenID Connect 属性定义OidcAttributeDefinition深入指南 OIDC 属性定义 OidcAttri后端认证鉴权单点登录Apereo CAS 服务过期策略配置指南Apereo CAS 服务过期策略配置指南 概述 在企业级单点登录Single Sign On, SSO系统中服务Service的生命周期管理至关重要后端认证鉴权单点登录上一篇LangChain.js × Google Vertex AI 集成指南授权机制、核心模型类与 Gemini 工具 Schema 限制详解下一篇Wasp 应用部署到 Netlify客户端构建、SPA 路由重定向与 CI/CD 自动部署实战创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

buildah config 命令完全指南:深入解析 OCI 镜像配置更新的核心机制
buildah config 命令完全指南:深入解析 OCI 镜像配置更新的核心机制

云原生 【免费下载链接】buildah A tool that facilitates building OCI images. 项目地址: https://gitcode.com/gh_mirrors/bu/buildah 点击查看 免费下载 导读 buildah config 是 buildah 中用于就地修改工作容器(working container)配置… · 2026/9/25 17:46:50

μWebSockets.js 从入门到实战:安装、HTTP/WebSocket 核心 API 与性能特性全解析
μWebSockets.js 从入门到实战:安装、HTTP/WebSocket 核心 API 与性能特性全解析

后端Web框架WebSocket 【免费下载链接】uWebSockets.js μWebSockets for Node.js back-ends :metal: 项目地址: https://gitcode.com/gh_mirrors/uw/uWebSockets.js 点击查看 免费下载 μWebSockets.js(WS)是一个以 C 为核心、通过原生 V8 … · 2026/9/25 17:46:44

使用 @turf/clusters-kmeans 对 GeoJSON 点要素执行 K-Means 空间聚类
使用 @turf/clusters-kmeans 对 GeoJSON 点要素执行 K-Means 空间聚类

数据分析 【免费下载链接】turf A modular geospatial engine written in JavaScript and TypeScript 项目地址: https://gitcode.com/gh_mirrors/tu/turf 点击查看 免费下载 turf/clusters-kmeans 是 Turf 地理空间引擎中的 K-Means 聚类模块:输入一个… · 2026/9/25 17:46:44

【WPF-VisionMaster】机器视觉通用平台V5.0版本发行说明
【WPF-VisionMaster】机器视觉通用平台V5.0版本发行说明

机器视觉通用平台V5.0版本发行说明地址 了解更多 System.Windows.Controls 命名空间 | Microsoft Learn 控件库 - WPF .NET Framework | Microsoft Learn WPF 介绍 | Microsoft Learn 使用 Visual Studio 创建新应用教程 - WPF .NET | Microsoft Learn https://github.co… · 2026/9/25 18:25:52

只用一个问题训练几百步,模型居然还在变强:一篇论文的意外发现
只用一个问题训练几百步,模型居然还在变强:一篇论文的意外发现

先说一件让人有点摸不着头脑的事。有研究团队拿出一个数学题,就一道题,反复喂给模型训练了上千步。按常理这事儿应该很快就练废了,一道题能有多少信息量?可结果是,模型的准确率一路涨,涨到接近用全部一万七千道题训练出来的效果的七成二。这不是巧合,也… · 2026/9/25 18:25:34

Atlas 300V 24G实战:从NPU选型到YOLO生产级部署
Atlas 300V 24G实战:从NPU选型到YOLO生产级部署

刚拿到Atlas 300V 24G这块卡的时候,我第一反应也是——这不就是一块显存比较大的“图像处理卡”吗?直到把YOLO模型完整跑完一遍,才真正搞明白它和普通GPU加速卡的区别。这篇文章不整虚的,就围绕两个实际问题展开:Atlas… · 2026/9/25 18:25:34

小模型能当裁判吗?一场关于强化学习奖励成本的实验
小模型能当裁判吗?一场关于强化学习奖励成本的实验

先问你一个问题。如果你要训练一个AI模型写深度研究报告,怎么判断它写得好不好?数学题有标准答案,代码题能跑测试用例,可一篇论文该不该给9分还是7分,谁说了算?过去几年,大模型圈子里流行的做法… · 2026/9/25 18:25:27

数据闭环分层抽帧策略从 TB 级采集数据中提取高价值帧:三道成本闸门
数据闭环分层抽帧策略从 TB 级采集数据中提取高价值帧:三道成本闸门

上一篇讲完了挖掘平台的架构骨架,从这篇开始填血肉。平台拿到采集数据后做的第一件事是「抽帧」——把视频形态的 clip 变成一张张图片。为什么必须做这一步?因为下游所有能力都是「认图不认视频」的:VLM 推理要喂图片,Embedding … · 2026/9/25 18:25:27

Atlas 300V 24G推理卡实战:从CANN环境搭建到YOLOv5模型部署全流程
Atlas 300V 24G推理卡实战:从CANN环境搭建到YOLOv5模型部署全流程

先给结论:Atlas 300V 24G确实是一张“运算加速卡”,但你要是拿它当普通图形卡用,就完全理解偏了。它是一张面向AI推理场景的加速卡,最近“atlas部署yolo”这么热,主要还是因为这卡性价比够看、国产化适配到位&#xff… · 2026/9/25 18:25:27

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码