后端认证鉴权单点登录【免费下载链接】casApereo CAS - Identity Single Sign On for all earthlings and beyond.项目地址https://gitcode.com/gh_mirrors/ca/cas点击查看免费下载本文围绕 Apereo CAS 项目中cas-server-support-google-analytics模块展开讲解如何让 CAS 在用户成功认证后向浏览器写入一个携带用户属性的 Cookie供 Google AnalyticsGA4采集自定义维度与指标并在登出时自动清除该 Cookie。读完本文你将掌握该模块的启用方式、cas.google-analytics.*全部配置项的含义与取值、Cookie 值与用户属性的匹配规则以及背后的 Webflow 挂载原理与测试用例可直接在自己的 CAS Overlay 中落地。模块定位与 GA4 兼容性说明Google Analytics 可以帮助运维与业务团队获得 CAS 登录页、登出页及认证流程的访问统计并通过自定义维度custom dimensions和自定义指标custom metrics刻画用户流量特征。官方文档在 Configuring-Google-Analytics.md 中明确强调Google Analytics 4GA4是下一代测量解决方案CAS 已用 GA4 取代 Universal Analytics。自 2023 年 7 月 1 日起标准的 Universal Analytics 属性将停止处理新的数据命中hit因此仍依赖 Universal Analytics 的部署应尽快迁移到 GA4。在配置页面时请使用 GA4 生成的 Measurement ID 作为跟踪 ID。启用模块加入 WAR Overlay 依赖该功能由独立的 Maven 模块cas-server-support-google-analytics提供模块目录为 support/cas-server-support-google-analytics。在 CAS WAR Overlay 中引入以下依赖即可启用implementation org.apereo.cas:cas-server-support-google-analytics加入依赖后CAS 启动时由 CasGoogleAnalyticsAutoConfiguration 自动装配相关 Bean。该配置类上标注了ConditionalOnFeatureEnabled(feature CasFeatureModule.FeatureCatalog.Metrics)意味着该模块归属于 CAS 的“指标Metrics”特性域遵循 CAS 统一的特性开关体系同时它声明了EnableConfigurationProperties(CasConfigurationProperties.class)用于绑定下文要介绍的cas.google-analytics.*配置项。核心机制认证成功即写入埋点 CookieGoogle Analytics 集成的关键能力是 CAS 在成功认证事件发生时向浏览器写入一枚特殊 Cookie该 Cookie 随后可被前端 JavaScript 读取并作为自定义维度上报给 Google Analytics。Cookie 的取值来源于认证事件本身携带的属性principal/authentication attribute这正是官方文档描述的行为其底层实现由 CreateGoogleAnalyticsCookieAction 完成从 Webflow 请求上下文中取出当前认证对象WebUtils.getAuthentication将认证属性authentication attributes与主体属性principal attributes合并为一个属性集合依据cas.google-analytics.cookie.attribute-name指定的属性名查找目标属性对命中的属性值列表逐一使用attribute-value-pattern正则进行匹配过滤将全部匹配成功的值以英文逗号,连接作为 Cookie 的最终取值写入响应。// 伪代码还原核心逻辑来自 CreateGoogleAnalyticsCookieAction.doExecuteInternal val attributes new LinkedHashMap(authn.getAttributes()); attributes.putAll(authn.getPrincipal().getAttributes()); val cookieValue values.stream() .map(Object::toString) .filter(value - RegexUtils.find(attributeValuePattern, value)) .collect(Collectors.joining(,)); googleAnalyticsCookieBuilder.addCookie(request, response, CookieRetrievingCookieGenerator.isRememberMeAuthentication(requestContext), cookieValue);注意两点实现细节若attribute-name为空或认证属性中不存在该属性名Action 不会写入 Cookie返回null事件流程照常继续写入时调用了CookieRetrievingCookieGenerator.isRememberMeAuthentication(...)说明该 Cookie 会跟随认证会话的“记住我Remember Me”状态一起处理Cookie 名称默认由配置项cookie.name决定默认值CasGoogleAnalytics。Cookie 在 Webflow 中的挂载位置从 CasGoogleAnalyticsWebflowConfigurer 的doInitialize()可以看到两个流程的挂载策略登录流程login flow在sendTicketGrantingTicket状态的退出动作列表exit action list末尾追加ACTION_ID_GOOGLE_ANALYTICS_CREATE_COOKIE动作——也就是说只有在 TGTTicket-Granting Ticket成功签发、认证真正完成之后才写入 Cookie未认证成功不会埋点登出流程logout flow在terminateSession状态的退出动作列表追加ACTION_ID_GOOGLE_ANALYTICS_REMOVE_COOKIE动作并在logoutView状态退出确认页的进入动作中把跟踪 ID 放入 flow scope。登出时清除 CookieRemoveGoogleAnalyticsCookieAction 的实现非常轻量从外部 Webflow 上下文取得HttpServletResponse调用CasCookieBuilder.removeCookie(response)将埋点 Cookie 失效。它与写入动作由同一套casGoogleAnalyticsCookieGeneratorBean 驱动保证读写使用相同的 Cookie 名称、路径、域等参数不会出现“写进去删不掉”的错配。配置参数详解cas.google-analytics.*所有配置项前缀均为cas.google-analytics由 GoogleAnalyticsProperties 与 GoogleAnalyticsCookieProperties 建模。两张属性类上都标注了RequiresModule(name cas-server-support-google-analytics)未引入模块时这些配置不会生效。顶层属性配置项application.yml 写法必填说明cas.google-analytics.google-analytics-tracking-id是GA4 的跟踪 IDMeasurement ID。配置后 CAS 会在登录/登出视图上激活 Google Analytics 脚本注入。该项在属性类中被标记为RequiredProperty是整个集成的入口开关Cookie 子属性Cookie 相关配置继承自 CAS 通用的 CookieProperties子属性前缀为cas.google-analytics.cookie.*配置项默认值说明cas.google-analytics.cookie.nameCasGoogleAnalyticsCookie 名称。由GoogleAnalyticsCookieProperties构造函数预设一般无需修改cas.google-analytics.cookie.attribute-name空指定从认证事件中收集哪个属性值作为 Cookie 内容为空则不会写 Cookiecas.google-analytics.cookie.attribute-value-pattern.正则表达式仅放行与该模式匹配的属性值字段上标注了RegularExpressionCapableCAS 启动时会校验正则合法性cas.google-analytics.cookie.path空Cookie 路径。留空由容器按上下文路径推导如需跨应用可见可显式配置cas.google-analytics.cookie.domain空Cookie 域名例如.example.org用于跨子域共享埋点 Cookiecas.google-analytics.cookie.securetrue仅允许 HTTPS 协议携带该 Cookiecas.google-analytics.cookie.http-onlytrue禁止 JavaScript 读取。注意若你打算让前端脚本读取 Cookie 值上报 GA4则需要结合same-site-policy与http-only综合权衡cas.google-analytics.cookie.max-age-1最大存活秒数-1表示浏览器关闭即失效0立即删除 Cookiecas.google-analytics.cookie.same-site-policy空Lax/Strict/None/Off或指向实现CookieSameSitePolicy的 Groovy 脚本 / 类全名None要求同时开启secure一个完整的示例配置如下cas: google-analytics: google-analytics-tracking-id: G-XXXXXXXXXX cookie: attribute-name: membership attribute-value-pattern: ^(faculty|staff).* name: CasGoogleAnalytics secure: true http-only: true max-age: -1 same-site-policy: Lax一个可直接验证的埋点场景以上配置的行为可以对照官方测试用例 CreateGoogleAnalyticsCookieActionTests 来理解测试中模拟用户casuser携带属性membership [faculty, staff, student]在attribute-value-pattern ^(faculty|staff).*的过滤下写入的 Cookie 值最终为faculty,staff——student因不匹配正则被剔除。这正是“自定义维度只上报符合条件的用户群体”的典型用法。对应的 Cookie 生成与登出清理行为分别由 CasGoogleAnalyticsCookieGeneratorTests 和 RemoveGoogleAnalyticsCookieActionTests 覆盖。前端视图如何拿到跟踪 IDCasGoogleAnalyticsWebflowConfigurer会在登录与登出流程启动时把跟踪 ID 放入 Webflow 的 flow scopekey 为常量googleAnalyticsTrackingId源码中定义为ATTRIBUTE_FLOWSCOPE_GOOGLE_ANALYTICS_TRACKING_ID。登录流程的sendTicketGrantingTicket写入 Cookie登出流程的logoutView同样注入该值。因此CAS 默认视图主题如 Thymeleaf 模板可以直接从 flow scope 读取该变量来渲染 GA4 的 gtag 脚本或读取埋点 Cookie若跟踪 ID 未配置为空字符串配置器会从 flow scope 中移除该变量避免向页面注入空的统计脚本。源码链路与运维建议从整体装配看CasGoogleAnalyticsAutoConfiguration 共注册了五个 Bean形成完整的执行链casGoogleAnalyticsCookieGenerator—— 基于CookieRetrievingCookieGenerator与NoOpCookieValueManager构建负责 Cookie 的生成、解析与清除casGoogleAnalyticsWebflowConfigurer—— 负责把写/删动作挂载到登录、登出 Webflow 的指定状态createGoogleAnalyticsCookieAction—— 认证成功写 CookieremoveGoogleAnalyticsCookieAction—— 登出清 CookiecasGoogleAnalyticsWebflowExecutionPlanConfigurer—— 将上述 Configurer 注册进 CAS Webflow 执行计划。全部 Bean 均声明为RefreshScope配合 Spring Cloud 可在运行期刷新配置而无需重启。运维层面的几点建议属性来源要对齐Cookie 值取自认证/主体属性请确认这些属性确实在认证过程中被解析出来如来自 LDAP、JDBC 或 REST 属性源否则attribute-name永远匹配不到内容Cookie 不会生成正则务必谨慎attribute-value-pattern默认.会放行所有值若你只希望统计特定群体如教师/员工用类似^(faculty|staff).*的锚定正则做白名单过滤SameSite 与跨站上报如果 GA4 前端脚本部署在与 CAS 不同的域名下读取 CAS 写入的 Cookie 时需注意same-site-policy与secure的组合跨站访问场景下通常需要SameSiteNone且启用 HTTPS版本前提该模块自 CAS 6.1.0 起提供Cookie 属性模型自 6.4.0 起引入GoogleAnalyticsCookieProperties的since 6.4.0更低版本升级时应以当前仓库源码为准核对配置项名称。至此你已具备在 CAS Overlay 中完整落地 Google Analytics 4 用户行为埋点的能力引入模块、配置cas.google-analytics.google-analytics-tracking-id与 Cookie 属性映射即可在认证成功后向浏览器写入精确过滤的用户属性 Cookie并在登出时自动清除为 GA4 自定义维度提供可靠的数据来源。赞分享后端认证鉴权单点登录【免费下载链接】casApereo CAS - Identity Single Sign On for all earthlings and beyond.项目地址https://gitcode.com/gh_mirrors/ca/cas点击查看免费下载相关推荐Apereo CAS集成Google Authenticator实现多因素认证指南Apereo CAS集成Google Authenticator实现多因素认证指南 概述 在当今网络安全环境中多因素认证 MFA 已成为保护敏感系统的必备措施后端认证鉴权单点登录Apereo CAS 地理追踪认证GeoTracking AuthenticationGoogle Maps 集成指南Apereo CAS 地理追踪认证GeoTracking AuthenticationGoogle Maps 集成指南 导读 本指南介绍如何在 Apereo后端认证鉴权单点登录Apereo CAS 认证事件 MongoDB 持久化指南配置 cas-server-support-events-mongo 与事件仓库实现解析Apereo CAS 认证事件 MongoDB 持久化指南配置 cas server support events mongo 与事件仓库实现解析 Apere后端认证鉴权单点登录上一篇3分钟上手AI背景处理工具如何重塑视觉创作流程下一篇嵌入式Modbus通信的轻量级解决方案nanoMODBUS全面指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
