news 2026/9/12 6:15:34

Authelia 与 Cloud Identity Engine 集成指南:通过 OpenID Connect 1.0 对接 Palo Alto 云身份引擎实现企业 SSO

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Authelia 与 Cloud Identity Engine 集成指南:通过 OpenID Connect 1.0 对接 Palo Alto 云身份引擎实现企业 SSO

Authelia 与 Cloud Identity Engine 集成指南:通过 OpenID Connect 1.0 对接 Palo Alto 云身份引擎实现企业 SSO

【免费下载链接】autheliaThe Single Sign-On Multi-Factor portal for web apps. OpenID Certified™ and Post-Quantum Cryptography Ready.项目地址: https://gitcode.com/GitHub_Trending/au/authelia

本指南以 Authelia 内置的 OpenID Connect 1.0 Provider 为核心,完整演示如何将 Palo Alto Networks 的 Cloud Identity Engine(云身份引擎)注册为 Authelia 的 OIDC 客户端,使企业用户能够通过 Authelia 的登录门户(含双因子认证)完成 Cloud Identity Engine 的认证。读完本文,你将掌握 Authelia 侧 OIDC 客户端的完整 YAML 配置方法与每个关键参数的含义,以及 Cloud Identity Engine 管理后台中 OIDC 认证类型的 8 步图形化配置流程,并理解授权码流程、PKCE 与 token 端点认证等底层机制。

测试版本

本文档所述集成方案在以下版本组合上验证通过:

组件版本
Autheliav4.39.24
Cloud Identity Engine未固定具体版本(以官方当前发布版本为准)

需要说明的是,Authelia 的 OpenID Connect 1.0 Provider 目前仍处于开放测试(open beta)阶段,但 Authelia 已通过 OpenID Certified 认证,涵盖 Basic OP / Implicit OP / Hybrid OP / Form Post OP / Config OP 等 profile。集成前建议阅读 OpenID Connect 1.0 集成介绍 了解 Provider 的能力边界(端点、算法、授权类型支持矩阵等)。

开始前的必读事项

在动手配置前,有几个与client_idclient_secret相关的硬性约束必须先了解,这些约束来自 OpenID Connect 1.0 客户端配置文档 与集成 FAQ,直接决定配置是否能通过校验:

关于client_id(Client ID):

  1. 该值对每个客户端必须唯一,不能与其它已注册客户端重复。
  2. 本文使用的cloudidentityengine仅为便于阅读和演示,生产环境不应直接使用,而应参照 如何生成 Client ID 与 Client Secret 中的建议生成(推荐 64 个随机字符,且长度不低于 40 字符)。
  3. 只能包含 RFC3986 定义的 Unreserved Characters(即字母、数字以及-._~)。
  4. 长度不得超过 100 个字符。

关于client_secret(Client Secret):

  1. 本文使用的insecure_secret同样仅用于演示,绝对不要在生产环境使用该值。
  2. 该字符串可以直接以明文形式写在 Authelia 配置中,但此行为已被标记为弃用,未来不保证继续支持;强烈推荐以哈希形式存储。Authelia 的client_secret支持多种哈希格式(如$pbkdf2-sha512$...、bcrypt、scrypt 等),从 internal/commands/crypto_hash.go 可以看到authelia crypto hash generate命令支持pbkdf2sha2-cryptbcryptscryptargon2等子命令用于生成这些哈希。需要注意:哈希只用于 Authelia 配置中的client_secret字段,Cloud Identity Engine 侧填入的仍是明文密钥。
  3. 哈希计算成本(迭代次数等)如果设置过高,可能导致客户端认证超时,相关调优方法见 Tuning the work factors 常见问题。

关于配置示例本身:

  • 下文给出的 Authelia 配置示例只包含客户端注册部分,你必须同时按 OpenID Connect 1.0 Provider 配置指南 补齐 Provider 层级的必填配置(如issuer、密钥、以及access_token_lifespan等生命周期选项)。
  • 该示例只展示了客户端可用配置选项的一小部分,authorization_policyconsent_modeclaims_policylifespan、各端点响应算法的签名/加密 key 等大量选项都未涉及,建议通读 OpenID Connect 1.0 Clients 配置文档 了解全部选项及其影响。

前提假设

本示例基于以下假设值展开,你可以根据自身环境替换:

  • Authelia Root URL:https://auth.example.com/
  • Client ID:cloudidentityengine
  • Client Secret:insecure_secret

其中部分值在官方文档中可通过文档变量自动替换(如将auth.example.com中的子域与域名替换为你实际的站点变量),下文统一以默认值auth.example.com为例书写。

第一步:配置 Authelia 的 OIDC 客户端

在 Authelia 的configuration.yml中加入以下客户端配置:

identity_providers: oidc: ## The other portions of the mandatory OpenID Connect 1.0 configuration go here. ## See: https://www.authelia.com/c/oidc clients: - client_id: 'cloudidentityengine' client_name: 'Cloud Identity Engine' client_secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. public: false authorization_policy: 'two_factor' require_pkce: true pkce_challenge_method: 'S256' redirect_uris: - '' # Replace with the value copied in step 7. scopes: - 'openid' - 'email' - 'profile' response_types: - 'code' grant_types: - 'authorization_code' access_token_signed_response_alg: 'none' userinfo_signed_response_alg: 'none' token_endpoint_auth_method: 'client_secret_post'

注意:redirect_uris中的空字符串是占位符,需要在下文 Cloud Identity Engine 配置完成后,将第 7 步复制到的Callback URL / Redirect URL回填到这里。

关键配置参数详解

以下逐一拆解上述配置中每个参数的作用与取值依据(来源:OpenID Connect 1.0 Clients 配置文档):

  • client_id(必填):客户端标识符,必须与 Cloud Identity Engine 中填写的 Client ID 完全一致。约束如上文所述(唯一、≤100 字符、仅含 RFC3986 非保留字符)。
  • client_name(可选):显示在 Authelia 用户界面上的友好名称,默认与client_id相同。
  • client_secret(confidential 客户端必填):Authelia 与 Cloud Identity Engine 之间的共享密钥。示例中给出的是明文insecure_secret的 PBKDF2-SHA512 摘要(310000 次迭代),这是推荐的存储形式。
  • public(布尔,默认false):置为false表示本客户端属于机密客户端(confidential client type),能够安全保管凭证;机密类型要求必须配置client_secret。若置为true则要求client_secret为空字符串,适用于 SPA、CLI 等无法保密凭证的场景(参见 RFC6749 Section 2.1)。
  • authorization_policy(字符串,默认two_factor):该客户端在 Authorization Request 中采用的授权策略,可选one_factortwo_factor,或 Provider 级authorization_policies中自定义的策略名。该策略仅作用于 OIDC 授权请求本身,与 Authelia 的访问控制规则(Access Control Rules)是两套独立机制,不应混用。
  • require_pkce(布尔,默认false):强制该客户端使用 PKCE(Proof Key for Code Exchange)。也可以在 Provider 层级用enforce_pkce对全部客户端全局开启。
  • pkce_challenge_method(字符串,默认空):强制指定 PKCE 挑战方法,合法值为空字符串、plainS256。配置了非空值后等效于同时开启require_pkce只要依赖方支持,强烈推荐S256——它将code_verifier经 SHA-256 摘要后 Base64URL 编码得到code_challenge,有效抵御授权码拦截攻击。
  • redirect_uris(必填):该客户端允许回调的 URI 白名单,大小写敏感,scheme 必须是httphttps,不在列表中的回调会被拒绝。此处的空值占位需要回填 Cloud Identity Engine 生成的回调地址。
  • scopes(列表,默认openid,groups,profile,email):允许该客户端请求的 scope 集合,应与 Cloud Identity Engine 实际需要的 claims 匹配。scope 定义可参考 OpenID Connect 1.0 Claims 文档。
  • response_types(列表,默认code):允许的响应类型。安全上只推荐使用code(即纯授权码流程),其它隐式/混合流程安全性较差。
  • grant_types(列表,默认authorization_code):允许客户端获取令牌的授权类型。本示例仅开放authorization_code,不配置刷新令牌(refresh_token)与client_credentials等类型。
  • access_token_signed_response_alg(默认none):置为none时 Access Token 以不透明(opaque)字符串形式签发;若配置为其它算法,则按 RFC9068 将 Access Token 编码为 JWT,供资源服务器做无状态校验,但不应把 JWT Profile Access Token 当作身份证明来使用。
  • userinfo_signed_response_alg(默认none):置为none时 UserInfo 端点返回普通 JSON;配置非none值后,整个 UserInfo 响应会变为签名 JWT。绝大多数客户端只支持none
  • token_endpoint_auth_method(默认client_secret_basic):客户端在 Token 端点的认证方式。本示例使用client_secret_post(密钥经 HTTP POST body 提交)。规格要求 confidential 客户端默认client_secret_basic,public 客户端默认none

底层流程支撑

从 OpenID Connect 1.0 集成介绍 可以确认与本次集成相关的 Authelia 端点实现(均挂在 Authelia Root URL 之下):

  • OpenID Connect Discovery:/.well-known/openid-configuration
  • OAuth 2.0 Authorization Server Metadata:/.well-known/oauth-authorization-server
  • JSON Web Key Set:/jwks.json
  • Authorization Endpoint:/api/oidc/authorization
  • Token Endpoint:/api/oidc/token
  • UserInfo Endpoint:/api/oidc/userinfo
  • Introspection:/api/oidc/introspection
  • Revocation:/api/oidc/revocation
  • Pushed Authorization Request:/api/oidc/pushed-authorization-request

本次集成走的是标准的Authorization Code Flow + PKCE:Cloud Identity Engine 将用户引导至https://auth.example.com/api/oidc/authorization,Authelia 完成身份认证(此处为two_factor,即密码 + 第二因素)与授权码签发;随后 Cloud Identity Engine 在 Token 端点使用client_secret_post认证并携带code_verifier兑换令牌;用户信息通过 UserInfo 端点(/api/oidc/userinfo)获取openidemailprofilescope 对应的 claims。

第二步:配置 Cloud Identity Engine

Cloud Identity Engine 侧只有一种配置方式,即通过其 Web 管理界面(Web GUI)完成,具体步骤如下:

  1. 登录你的 Cloud Identity Engine 管理员账户。
  2. 选择Authentication(认证)。
  3. 选择Authentication Types(认证类型)。
  4. 选择Add New Authentication Type(添加新认证类型)。
  5. OIDC下选择Set Up(设置)。
  6. 填写以下值:
    • Authentication Type Name(认证类型名称):Authelia
    • Client Name(客户端名称):Authelia
    • Client ID(客户端 ID):cloudidentityengine
    • Client Secret(客户端密钥):insecure_secret
    • OIDC Issuer URL(OIDC 签发者 URL):https://auth.example.com
    • JWT Encryption Algorithm(JWT 加密算法):RS256
    • OIDC Authentication Server Discovery Endpoint(OIDC 认证服务器发现端点,可选):https://auth.example.com/.well-known/openid-configuration
  7. 点击Callback URL / Redirect URL旁边的复制按钮,将复制到的回调地址回填到 Authelia 配置中该客户端的redirect_uris里。
  8. 点击Submit(提交)。

完成以上步骤后,Cloud Identity Engine 即完成对 Authelia 这个 OIDC Provider 的注册,企业用户即可通过 Authelia 门户完成认证与授权。

安全加固建议

  • 密钥生成:生产环境务必按 FAQ 的生成建议 为每个客户端生成唯一、随机、长度超过 40 字符的 ID 与密钥对;client_secret在 Authelia 配置中应以支持哈希的格式存储(可用authelia crypto hash generate pbkdf2等命令生成,见 internal/commands/crypto_hash.go),而 Cloud Identity Engine 中填写的是明文密钥。
  • 严格限定回调redirect_uris只登记 Cloud Identity Engine 实际生成的那一个回调地址,避免开放任意回调导致授权码被劫持。
  • 开启 PKCE:本示例已通过require_pkce: truepkce_challenge_method: 'S256'强制 PKCE,这是抵御授权码拦截攻击的关键措施。
  • 最小化 scopescopes仅授予openidemailprofile,不额外开放groupsoffline_access等非必要范围。
  • 保持none算法:在 Cloud Identity Engine 明确支持签名响应之前,access_token_signed_response_alguserinfo_signed_response_alg保持none即可;若未来需要 JWT 格式的 Access Token,可参考 RFC9068 的语义调整,但切勿将 JWT Access Token 用作身份凭证。

参考文档

  • OpenID Connect 1.0 集成介绍:端点、算法、授权类型与支持矩阵总览
  • OpenID Connect 1.0 客户端配置:客户端全部配置选项的权威说明
  • OpenID Connect 1.0 Provider 配置:Provider 级必填配置与全局策略
  • OpenID Connect 1.0 常见问题:Client ID/Secret 生成、哈希存储与性能调优

【免费下载链接】autheliaThe Single Sign-On Multi-Factor portal for web apps. OpenID Certified™ and Post-Quantum Cryptography Ready.项目地址: https://gitcode.com/GitHub_Trending/au/authelia

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/12 6:13:49

Flutter+OpenHarmony开发番茄钟的技术实践与优化

1. 为什么选择FlutterOpenHarmony开发番茄钟? 在移动应用开发领域,Flutter因其跨平台特性和高性能渲染引擎而备受青睐。而OpenHarmony作为新兴的操作系统平台,正在构建自己的生态体系。将两者结合开发番茄钟应用,看似简单的选择背…

作者头像 李华
网站建设 2026/9/12 6:11:46

C#自动化运维:37秒快速恢复VMware虚拟机

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

作者头像 李华
网站建设 2026/9/12 6:10:56

MindSpore深度学习框架环境配置实战指南

1. MindSpore环境配置的必要性与挑战作为华为开源的深度学习框架,MindSpore凭借其"一次开发,全场景部署"的特性,在科研和工业界获得了越来越多的关注。但很多开发者在第一步——环境配置上就遇到了各种"拦路虎"。我曾在三…

作者头像 李华
网站建设 2026/9/12 6:09:22

SpringBoot+Vue药品管理系统开发实战

1. 项目概述这个药品管理系统是我在2022年完成的毕业设计项目,采用SpringBootVue前后端分离架构,配合MySQL数据库,实现了药品信息管理、库存预警、销售统计等核心功能。系统从需求分析到最终部署上线历时3个月,期间踩过不少坑&…

作者头像 李华