ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

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

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),仅供参考
返回列表