后端认证鉴权单点登录【免费下载链接】casApereo CAS - Identity Single Sign On for all earthlings and beyond.项目地址https://gitcode.com/gh_mirrors/ca/cas点击查看免费下载本文是 Apereo CAS 委托认证Delegated Authentication系列中针对OAuth2.0 身份提供方的专项指南面向需要在 CAS 登录页引入 Facebook、GitHub、Google 等标准 OAuth2 提供方或对接任意自定义 OAuth2 服务的部署场景。读完本文你将掌握如何在 WAR overlay 中引入 OAuth2 委托认证模块、如何通过cas.authn.pac4j.oauth2配置体系完成客户端注册与授权端点调优、如何结合服务注册表对 OAuth2 身份提供方做访问控制与自动跳转以及如何排查与调试委托认证流程。委托认证总览CAS 作为 OAuth2 客户端委托认证Delegated Authentication是 CAS 的一项核心能力CAS 借助 Pac4j 库 扮演客户端 / 服务提供方代理的角色将认证过程委托给外部身份提供方IdP支持的提供方类型包括其他 CAS 服务器SAML2 身份提供方OAuth2 提供方Facebook、Twitter、GitHub、Google、LinkedIn 等OpenID Connect 身份提供方Google、Apple 等ADFS本文聚焦其中的OAuth2 提供方场景。CAS 的委托认证机制允许发起认证请求的客户端使用任意协议SAML、OAuth2、OIDC 等例如一个 OAuth2 客户端可以让 CAS 以委托模式去外部 SAML2 IdP、另一台 CAS 服务器或 Facebook 完成认证最终向客户端返回一个 OAuth2 用户画像——CAS 在中间扮演代理完成协议翻译。整体机制请参见 Delegate-Authentication 总览。启用模块依赖在 WAR overlay 中加入以下依赖即可启用 OAuth2 委托认证支持implementation org.apereo.cas:cas-server-support-pac4j-oidc该模块位于仓库 support/cas-server-support-pac4j-oidc 目录下内含 OAuth2/OIDC 客户端构建、webflow 配置如DelegatedAuthenticationOidcWebflowConfigurer、登出传播DelegatedClientOidcLogoutAction以及端点贡献等实现。从源码结构看OAuth2 客户端构建逻辑复用了cas-server-support-pac4j-webflow模块的通用委托认证基础设施因此该模块同样需要存在于 overlay 中。配置体系cas.authn.pac4j.oauth2OAuth2 身份提供方的全部配置统一挂在cas.authn.pac4j.oauth2前缀之下它对应配置模型类 Pac4jOAuth20ClientPropertiesRequiresModule(name cas-server-support-pac4j-webflow)并在 Pac4jDelegatedAuthenticationProperties 中以ListPac4jOAuth20ClientProperties oauth2的形式承载因此该配置天然支持定义多个 OAuth2 提供方列表式配置。必填项客户端凭据与端点继承自 Pac4jIdentifiableClientProperties 的id、secret以及Pac4jOAuth20ClientProperties自身声明的三个端点均为RequiredProperty必填配置项说明cas.authn.pac4j.oauth2[0].id在外部 OAuth2 提供方处申请到的 Client ID支持 SpEL 表达式cas.authn.pac4j.oauth2[0].secretClient Secret支持 SpEL 表达式cas.authn.pac4j.oauth2[0].authUrl提供方的授权端点Authorization Endpointcas.authn.pac4j.oauth2[0].tokenUrl提供方的令牌端点Token Endpointcas.authn.pac4j.oauth2[0].profileUrl提供方的用户画像端点Profile Endpoint用于换取用户信息OAuth2 流程控制参数Pac4jOAuth20ClientProperties提供了一系列流程控制参数可直接对照源码 Pac4jOAuth20ClientProperties.java 理解其默认值与作用配置项默认值说明scope空向身份提供方请求的授权范围Scope多个 scope 以空格或逗号分隔responseTypecode决定认证服务器上的认证流程标准授权码流程保持默认即可withStatefalse是否在向提供方发送认证请求时生成 state 值CSRF 防护profileVerbPOST请求用户画像端点使用的 HTTP 方法clientAuthenticationMethodbasicAuth客户端认证方式basicAuth默认HTTP Basic或requestBody将凭据放入请求体profileAttrs空 Map以键值对形式声明需要收集的画像属性key 为提供方返回的属性名value 为映射到 CAS 侧的属性名无需映射时二者相同customParams空 Map在授权请求等场景中随请求发送的自定义参数键值对关于profileAttrs源码注释给出了非常实用的进阶用法value 可以写成CONVERTER|mapped-attribute形式其中CONVERTER可为Locale、Integer、Color、Date、Gender、Boolean、Long、String、Url等类型转换器还支持内联 Groovy 脚本转换器例如groovy { return attribute -test }|mapped-attributeCAS 会执行脚本完成属性值的变换与映射。客户端展示与行为参数继承自基类以下参数继承自 Pac4jBaseClientProperties对所有委托客户端通用配置项默认值说明clientName空客户端名称主要用于 UI 展示与唯一性标识名称中的非单词字符会被转换为-如This Org (New)→This-Org--New-并追加到登录页跳转链接的class属性上便于对单个 IdP 做自定义样式如组织 LogodisplayName空客户端的展示标题留空时使用客户端原始名称cssClass空分配给该客户端的 CSS 类enabledtrue客户端 / 外部身份提供方是否启用autoRedirectTypeNONE是否自动跳转到该客户端枚举NONE/ 显式自动跳转等详见下文自动跳转principalIdAttribute空身份提供方响应中用于确立已认证用户并构建 CAS profile 的属性callbackUrl空身份提供方完成认证后回跳 CAS 的回调地址未指定时以 CAS 服务器登录端点为基准构造最终回调地址callbackUrlTypeQUERY_PARAMETER回调地址解析方式枚举PATH_PARAMETER/QUERY_PARAMETER/NONEOAuth2 客户端构造函数中默认设置为PATH_PARAMETER客户端名追加到回调路径中propagateLogouttrueCAS 登出时是否将登出请求传播给委托的身份提供方完整 YAML 配置示例综合以上参数一个典型的 OAuth2 委托客户端配置如下cas: authn: pac4j: oauth2: - client-name: MyOAuth2Provider id: my-client-id secret: my-client-secret auth-url: https://provider.example.org/oauth2/authorize token-url: https://provider.example.org/oauth2/token profile-url: https://provider.example.org/oauth2/profile scope: openid profile email response-type: code with-state: true profile-verb: GET client-authentication-method: basicAuth profile-attrs: given_name: givenName family_name: familyName email: email custom-params: audience: cas display-name: Example OAuth2 Provider css-class: oauth2-provider auto-redirect-type: NONE propagate-logout: true注意具体属性书写风格连字符 / 驼峰与 CAS 使用的配置绑定方式保持一致即可。身份提供方注册的多种方式除了直接在配置文件中声明OAuth2 等身份提供方还可通过以下方式动态注册详见 Delegate-Authentication-Provider-Registration 指南JDBC借助cas-server-support-jpa-util模块将提供方配置存放在数据库表JdbcIdentityProviderEntity列id、type、index、name、value中name列的值会追加到配置前缀cas.authn.pac4j之后支持cas、oidc、saml、oauth等类型。REST配置cas.authn.pac4j.rest后CAS 会请求远端 REST 端点端点返回体中需携带 CAS 属性形式如cas.authn.pac4j.github.client-name、cas.authn.pac4j.cas[0].login-url的 JSON 负载且响应码必须为200。缓存提供方注册数据获取后被 CAS 缓存采用可配置的过期策略仅在缓存为空或失效时才重新联系端点且缓存按 CAS 节点各自持有。发现选择与自动跳转登录页发现选择外部身份提供方默认以菜单形式展示在登录页上用户从列表中选择其一完成认证也可以配置动态发现策略依据用户标识用户名、邮箱域名等自动匹配 IdP。动态策略默认支持 JSON 规则文件键为匹配用户标识的正则表达式如.example.org值指定clientName与排序order。详见 Delegate-Authentication-DiscoverySelection 指南。显式自动跳转CAS 可以通过专用链接显式跳转到指定外部身份提供方例如跳转到配置中名为Twitter的客户端https://sso.example.org/cas/clientredirect?client_nameTwitter该示例假设 CAS 默认以查询参数client_name识别提供方名称。更完整的自动跳转与独占策略参见 Delegate-Authentication-Redirection 指南。服务级认证策略与 OAuth2 提供方授权通过服务注册表可以为特定应用约束允许使用的 OAuth2 身份提供方。以下 JSON 服务定义将应用sample的委托认证策略限定为仅允许Facebook与Twitter两个提供方对应 CAS 配置中的客户端名称{ class : org.apereo.cas.services.CasRegisteredService, serviceId : sample, name : sample, id : 100, accessStrategy : { class : org.apereo.cas.services.DefaultRegisteredServiceAccessStrategy, delegatedAuthenticationPolicy : { class : org.apereo.cas.services.DefaultRegisteredServiceDelegatedAuthenticationPolicy, allowedProviders : [ java.util.ArrayList, [ Facebook, Twitter ] ], permitUndefined: true, exclusive: false, selectionStrategy: file:/path/to/script.groovy } } }策略字段说明详见 Delegate-Authentication-AuthenticationPolicy 指南字段说明allowedProviders允许的提供方列表内容为外部身份提供方客户端名称permitUndefined未显式定义允许提供方时是否放行访问exclusive是否将认证独占限定于允许的提供方从而禁用用户名/密码等其他认证方式selectionStrategy以脚本方式决定如何选择并跳转到身份提供方当exclusive为true且仅列出单个提供方时该应用的认证请求会被自动重定向到该提供方登录页选择菜单随之移除。在 DelegatedAuthenticationConfiguration 中RegisteredServiceDelegatedAuthenticationPolicyAuditableEnforcer与DelegatedAuthenticationServiceTicketValidationAuthorizer会在服务票据验证阶段对上述策略执行审计与授权校验是策略生效的底层实现。属性推送将 OAuth2 用户画像属性释放给应用OAuth2 提供方返回的用户画像经 CAS 处理后用户标识始终会推送给 CAS 客户端而用户属性是否推送取决于服务器端配置与客户端验证服务票据的方式。在 CAS 服务器侧需要在期望的服务定义中配置属性释放策略例如仅释放name、first_name、middle_name{ class : org.apereo.cas.services.CasRegisteredService, serviceId : sample, name : sample, id : 100, description : sample, attributeReleasePolicy : { class : org.apereo.cas.services.ReturnAllowedAttributeReleasePolicy, allowedAttributes : [ java.util.ArrayList, [ name, first_name, middle_name ] ] } }其中来自提供方画像的属性名如first_name可通过上文profileAttrs的映射机制重命名为 CAS 侧统一使用的属性名。后处理与 Provisioning后处理Post Processing配置cas.authn.pac4j.core.groovy-provider-post-processor可对提供方在呈现给 UI 之前做后处理典型用途是服务端条件式自动跳转。Groovy 脚本签名与参数详见 Delegate-Authentication-PostProcessing 指南。Provisioning配置下发默认情况下从外部提供方提取并合并进 CAS principal 的用户画像不会被存储或追踪。CAS 支持通过 Groovy 脚本cas.authn.pac4j.provisioning.groovy、REST 端点cas.authn.pac4j.provisioning.rest请求体中携带principalId、profileId、profileAttributes、clientName等字段、SCIM v2cas.authn.pac4j.provisioning.scim或自定义DelegatedClientUserProfileProvisionerBean 将画像同步到外部身份库详见 Delegate-Authentication-Provisioning 指南。登出传播由于 OAuth2 客户端默认propagateLogouttrueCAS 登出时会尝试将登出传播至外部身份提供方。OAuth2/OIDC 模块中 DelegatedClientOidcLogoutAction 与DelegatedClientOidcLogoutRedirectionStrategy承担了登出重定向的编排若不需要传播可将该客户端的propagate-logout置为false。故障排查与日志委托认证涉及的外部库为org.pac4j在 log4j 配置文件中为其开启 debug 级别即可获得详细诊断信息... Logger nameorg.pac4j leveldebug additivityfalse AppenderRef refcasConsole/ AppenderRef refcasFile/ /Logger ...日志内容覆盖 OAuth2 授权请求构造、回调处理、令牌交换与画像提取等关键环节是定位端点配置错误、scope 缺失或属性映射失败的首选手段。进一步阅读Delegate-Authentication 总览含委托认证流程与 MFA 识别Delegate-Authentication-Provider-RegistrationIdP 注册属性 / JDBC / REST / 缓存Delegate-Authentication-DiscoverySelection发现选择策略Delegate-Authentication-Redirection自动跳转与独占Delegate-Authentication-AuthenticationPolicy认证策略Delegate-Authentication-Provisioning画像配置下发Delegate-Authentication-PostProcessing提供方后处理配置模型源码Pac4jOAuth20ClientProperties、Pac4jBaseClientProperties、Pac4jDelegatedAuthenticationProperties赞分享后端认证鉴权单点登录【免费下载链接】casApereo CAS - Identity Single Sign On for all earthlings and beyond.项目地址https://gitcode.com/gh_mirrors/ca/cas点击查看免费下载相关推荐Apereo CAS与Shibboleth身份提供者集成指南Apereo CAS与Shibboleth身份提供者集成指南 概述 Apereo CAS作为企业级单点登录解决方案可以与Shibboleth联邦SSO平台进行后端认证鉴权单点登录Apereo CAS 委托认证发现选择机制详解Apereo CAS 委托认证发现选择机制详解 概述 在Apereo CAS系统中委托认证Delegated Authentication是一种允许用户通后端认证鉴权单点登录Apereo CAS 与 ADFS 集成实战基于 WS-Federation 的联合身份认证完全指南Apereo CAS 与 ADFS 集成实战基于 WS Federation 的联合身份认证完全指南 导读 本文围绕 Apereo CAS 与 Microso后端认证鉴权单点登录上一篇Med-ChatGLM终极指南3分钟实现智能医疗AI对话下一篇Vichan模板引擎指南如何自定义主题和界面设计创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
NoneBot2 框架概览:异步优先、类型注解与依赖注入驱动的跨平台聊天机器人开发 后端即时通讯 【免费下载链接】nonebot2 跨平台 Python 异步聊天机器人框架 / Asynchronous multi-platform chatbot framework written in Python 项目地址: https://gitcode.com/gh_mirrors/no/nonebot2 点击查看 免费下载 NoneBot2 是一个现代、跨平台、可扩展的… · 2026/9/28 2:59:33
AlgoNote 算法通关手册:LeetCode 0046「全排列」回溯算法深度解析 教程文档知识库 【免费下载链接】AlgoNote ⛽️「算法通关手册」:从零开始的「算法与数据结构」学习教程,200 道「算法面试热门题目」,1000 道「LeetCode 题目解析」,持续更新中! 项目地址: https://gitcod… · 2026/9/28 2:59:33
食品车间洗箱机怎么选 欧倍力侧翻式洗箱机 高压喷淋+热水清洗 厂家售后无忧 食品车间洗箱机行业基础科普周转箱是食品生产、餐饮配送、中央厨房等场景必不可少的工具,不管是存放原材料、转运半成品,还是配送成品餐食,周转箱都会直接接触食品,箱底箱角、棱边缝隙很容易残留食物残渣、重油污、面浆、酱料污渍… · 2026/9/28 2:59:33
Spingboot启动预热的实现 启动预热的适用场景启动预热适合以下情况:数据主要来自第三方接口,无法直接从本地数据库读取。第三方接口响应较慢,首次访问容易超时。一个页面需要调用多个第三方接口或逐项查询。数据读取频繁,但变化不频繁。希望服务启动后&… · 2026/9/28 3:40:12
学Java别走弯路,这5个方向最吃香 学Java的人很多,但学明白的人不多。有人学了半年还在写控制台程序,有人一年就能独当一面。差别不在天赋,而在方向。Java生态太庞大了,什么都学等于什么都没学。选对方向,事半功倍。今天盘点当前最吃香的5个Java方向&am… · 2026/9/28 3:32:15
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01
制作网页比较方便的软件怎么选?一文搞懂避坑指南 制作网页比较方便的软件怎么选?一文搞懂避坑指南 很多老板一上来就问:做个网站多少钱?但我反问他:你的域名买了吗?服务器租了吗?他一脸懵。这就是典型的“域名服务器搞不懂”。别急,今天咱们不聊虚的,直接 一文搞懂 那些让你头秃的技术名词。… · 2026/9/28 0:00:06
婚恋网站实战案例:避开3个高价坑,省钱50%还能跑赢流量 婚恋网站实战案例:避开3个高价坑,省钱50%还能跑赢流量 找婚恋网站建站公司,最怕的就是被坑高价。很多同行跟我吐槽,报价单上写得模棱两可,功能栏里全是“高级定制”、“专属UI”,结果落地全是套壳。今天不聊虚的,直接甩几个我经手的 实战案例… · 2026/9/28 0:00:19
济南做网站多少钱:3个案例拆解,防黑源码下载全攻略 济南做网站多少钱:3个案例拆解,防黑源码下载全攻略 上周济南一个做建材的老板找我,脸都绿了。他的官网首页弹出了赌博广告,后台被植入了挖矿脚本。他慌得问我:“网站被黑挂马不知道怎么办?能不能直接找之前的外包公司要源码下载,看看哪里被动了手脚?… · 2026/9/28 0:00:25