# Authentik: 搭建属于自己的单点登录服务 !!! tip "建议" 本文篇幅较长,请善于页内搜索 ++ctrl+f++ 与右侧的文章目录 ## 准备/环境条件 - 域名 - Ubuntu 24.04 LTS - Authentik 2026.2.1 - Traefik (Nginx / Caddy 亦可) - Docker & Docker Compose ## 安装 安装步骤基本依照 [Docker Compose installation - authentik](https://docs.goauthentik.io/install-config/install/docker-compose/) 完成。 首先,编写 `docker-compose.yml`,Authentik 由 `PostgreSQL` `Server` `Worker` 三部分构成。 ``` yaml title="docker-compose.yml" services: authentik_postgresql: image: docker.io/library/postgres:16-alpine container_name: authentik_postgresql volumes: - /path/to/authentik/database:/var/lib/postgresql/data networks: - authentik_network environment: POSTGRES_PASSWORD: ${PG_PASS:?database password required} POSTGRES_USER: ${PG_USER:-authentik} POSTGRES_DB: ${PG_DB:-authentik} healthcheck: interval: 30s retries: 5 start_period: 20s test: - CMD-SHELL - pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER} timeout: 5s env_file: - .env restart: unless-stopped authentik_server: image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2026.2} container_name: authentik_server command: server ports: - "9000:9000" # For authentik embedded outpost networks: - basic_network - authentik_network volumes: - /path/to/authentik/data:/data - /path/to/authentik/custom-templates:/templates environment: AUTHENTIK_POSTGRESQL__HOST: authentik_postgresql AUTHENTIK_POSTGRESQL__USER: ${PG_USER:-authentik} AUTHENTIK_POSTGRESQL__NAME: ${PG_DB:-authentik} AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS} AUTHENTIK_SECRET_KEY: ${AUTHENTIK_SECRET_KEY:?secret key required} env_file: - .env depends_on: authentik_postgresql: condition: service_healthy restart: unless-stopped shm_size: 512mb labels: - "traefik.enable=true" - "traefik.docker.network=basic_network" # HTTPS part: - "traefik.http.routers.authentik-secure.entrypoints=web-secure" - "traefik.http.routers.authentik-secure.tls=true" - "traefik.http.routers.authentik-secure.tls.certresolver=letsencrypt" - "traefik.http.routers.authentik-secure.rule=Host(`your.authentik.domain`)" - "traefik.http.routers.authentik-secure.middlewares=default@file" # Upstream part: - "traefik.http.services.authentik.loadbalancer.server.scheme=http" - "traefik.http.services.authentik.loadbalancer.server.port=9000" # Authentik default http port authentik_worker: image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2026.2} container_name: authentik_worker command: worker networks: - authentik_network environment: AUTHENTIK_POSTGRESQL__HOST: authentik_postgresql AUTHENTIK_POSTGRESQL__USER: ${PG_USER:-authentik} AUTHENTIK_POSTGRESQL__NAME: ${PG_DB:-authentik} AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS} AUTHENTIK_SECRET_KEY: ${AUTHENTIK_SECRET_KEY:?secret key required} user: root volumes: - /var/run/docker.sock:/var/run/docker.sock - /path/to/authentik/data:/data - /path/to/authentik/certs:/certs - /path/to/authentik/custom-templates:/templates env_file: - .env depends_on: authentik_postgresql: condition: service_healthy restart: unless-stopped networks: basic_network: name: basic_network authentik_network: name: authentik_network ``` 然后,创建配置文件 `.env`,并生成数据库密码和 Authentik 密钥。 ``` bash touch .env echo "PG_PASS=$(openssl rand -base64 36 | tr -d '\n')" >> .env echo "AUTHENTIK_SECRET_KEY=$(openssl rand -base64 60 | tr -d '\n')" >> .env ``` 接着,继续编辑配置文件 `.env`,添加邮件发送配置,以下以腾讯企业邮箱(即企业微信邮箱)为例。 ``` yaml title=".env" PG_PASS=(Automatically generated from the previous step) AUTHENTIK_SECRET_KEY=(Automatically generated from the previous step) # SMTP Host Emails are sent to AUTHENTIK_EMAIL__HOST=smtp.exmail.qq.com AUTHENTIK_EMAIL__PORT=465 # Optionally authenticate (don't add quotation marks to your password) AUTHENTIK_EMAIL__USERNAME=authentik@your.domain AUTHENTIK_EMAIL__PASSWORD=(Tencent Enterprise Email SMTP password) # Use StartTLS AUTHENTIK_EMAIL__USE_TLS=false # Use SSL AUTHENTIK_EMAIL__USE_SSL=true AUTHENTIK_EMAIL__TIMEOUT=10 # Email address authentik will send from, should have a correct @domain AUTHENTIK_EMAIL__FROM=authentik@your.domain ``` 最后,启动 Authentik 服务。 ``` bash docker compose pull docker compose up -d ``` Authentik 正常启动后,请访问 `https://your.authentik.domain/if/flow/initial-setup/` 完成初始化配置。 ## 自定义 ### 流程、阶段和输入 Authentik 前端实现由流程、阶段和输入三者构成: - 流程是由一系列用于对用户进行身份验证、注册或恢复的阶段构成。 - 阶段是引导用户完成流程的单个步骤。 - 输入是可用于输入阶段的单个输入项。 自定义流程、阶段和输入有两种办法: - 手动编辑 - 导入**流程蓝图**: 管理员界面 - 流程与阶段 - 流程 - 导入 - [恢复流程(需邮箱验证)](https://static.cattom.site/authentik-blueprints/forget-password.yaml) - [删除账户流程](https://static.cattom.site/authentik-blueprints/unenrollment.yaml) - [无密码登录流程(WebAuthn)](https://static.cattom.site/authentik-blueprints/passwordless-login.yaml) - [邀请注册流程](https://static.cattom.site/authentik-blueprints/enrollment.yaml) ### 验证码阶段: Cloudflare Turnstile (可选) **Cloudflare**: - (当前项目) - 应用程序安全 - Turnstile - 小组件名称: (随意) - 主机名管理: (按实际情况) - 小组件模式: 托管 - 您是否要为此站点选择预先许可: 否 **Authentik**: - 管理员界面 - 流程与阶段 - 阶段 - 创建 - 选择 `Captcha Stage` - Stage Name: (随意) - 提供程序类型: `Cloudflare Turnstile` - 公钥: (Cloudflare 提供的**站点密钥**) - Secret Key: (Cloudflare 提供的**密钥**) ### 登录流程优化 - 管理员界面 - 流程与阶段 - 阶段 - (身份验证阶段) - 流程绑定 - 编辑流程 - default-authentication-identification: - 密码流程 - 验证码流程 - WebAuthn 身份验证器验证流程 - 无密码流程 - 恢复流程 - default-authentication-mfa-validation: - 设备类型: `静态令牌` `TOTP 身份验证器` `WebAuthn 身份验证器` - 未配置操作: 强制用户配置身份验证器 - 配置阶段: - default-authenticator-webauthn-setup - default-authenticator-totp-setup - WebAuthn 用户验证: 如果可用,则首选用户验证,但不是必需的。 ### 外观 - 转至 管理员界面 - 系统 - 品牌 - 域名: `authentik.your.domain` - 品牌设置: - 标题 - ... - 默认流程: - 恢复流程 - 删除账户流程 - ... ## 对接支持 OAuth2/OpenID 的应用 进入 Authentik 管理员界面后,找到应用程序 - 应用程序 - `以提供程序创建`。 **第一步 应用程序**: - 应用名称: 任意字符 - Slug: 英文字符与数字 - 应用界面设置: - 启动 URL: 对应应用的登录界面 **第二步 选择提供程序**: OAuth2/OpenID Provider **第三步 配置提供程序**: - 授权流程: - default-provider-authorization-**implicit**-consent: 用户通过 Authentik 登录对应应用时不需要点击“授权” - default-provider-authorization-**explicit**-consent: 用户通过 Authentik 登录对应应用时需要点击“授权” - 协议设置: - 客户端类型: 机密 - 客户端 ID: (自动生成,复制备用) - 客户端 Secret: (自动生成,复制备用) - 重定向 URL/Origin: (按照应用实际情况添加) - 高级流程设置: - 失效流程: default-provider-invalidation **第四步 配置绑定**: (跳过,可后续按照实际情况设置) **第五步 检查与提交应用程序**: (检查无误后,点击“提交”) ### OpenList/AList 以下步骤基本参照 [单点登录 - OpenList文档](https://doc.oplist.org/guide/advanced/sso#_3-6-authentik) 完成。 #### Authentik 配置 **配置提供程序**: - 重定向 URL/Origin: - `正则表达式` `https://your.openlist.domain/api/auth/sso_callback\?method=get_sso_id` - `正则表达式` `https://your.openlist.domain/api/auth/sso_callback\?method=sso_get_token` **获取 JWT 证书**: - 转至 系统 - 证书 - 找到 `authentik Self-signed Certificate`,点击列表左侧的 `>` - 点击 `下载证书` 以获取 JWT 证书 !!! warning "注意" - 记得将 `your.openlist.domain` 替换为你的 OpenList 对应的 FQDN. - `?` 前的 `\` 是正则表达式中的转义字符,必须保留。 #### OpenList/AList 配置 !!! tip "建议" 建议默认管理员账户不绑定单点绑定服务,以避免可能的权限混乱。 转至 OpenList/AList 管理 - 设置 - 单点登录 - SSO 登录启用: 是 - SSO 登录平台: `OIDC` - SSO 客户端 ID: (Authentik 中对应应用的提供程序的客户端 ID) - SSO 客户端密钥: (Authentik 中对应应用的提供程序的客户端 Secret) - OIDC 用户名键: `preferred_username` - 组织名称: `user` - SSO 应用名称: `user` - SSO 端点名称: (Authentik 中对应应用的提供程序的**OpenID 配置颁发者**) - SSO JWT 公钥: 打开先前下载的 JWT 证书,并将全部内容粘贴在输入框中。应以 -----BEGIN CERTIFICATE----- 开头。 - SSO 额外范围: (空) - SSO 自动注册: (按需启用) - SSO 默认根目录: `/` (可根据实际情况调整) - SSO 默认权限: - 默认为 `0`,后续可通过管理界面为用户手动赋权。 - 请参考[SSO默认权限 - OpenList文档](https://doc.oplist.org/guide/advanced/sso#_4-4-sso%E9%BB%98%E8%AE%A4%E6%9D%83%E9%99%90) - SSO 兼容模式: 否 ### Gitea !!! tip "建议" 在继续操作前,请确保您拥有另一个管理员账户。如果将 Authentik 关联到 Grafana 上唯一的管理员账户,权限可能会被覆盖。 以下配置为个人整理,可能存在错误和缺漏,仅供参考。 #### Authentik 配置 **配置属性映射**: - 转至 自定义 - 属性映射 - 点击 “创建” - 选择类型: `Scope Mapping` - 创建 Scope Mapping: - 名称: `gitea` - 作用域名称: `gitea` - 表达式: ``` python gitea_claims = {} if request.user.groups.filter(name="gituser").exists(): gitea_claims["gitea"]= "user" if request.user.groups.filter(name="gitadmin").exists(): gitea_claims["gitea"]= "admin" if request.user.groups.filter(name="gitrestricted").exists(): gitea_claims["gitea"]= "restricted" return gitea_claims ``` **设立用户组与添加已有用户进入用户组**: 请分别创建名为 `gitadmin` `gituser` `gitrestricted` 的用户组。 - 转至 目录 - 组 - 点击 “新建组” - 组名: `gitadmin` `gituser` `gitrestricted` - 超级用户权限: 否 - 父级: (空) - 角色: (空) - 属性: (保持默认) 接下来,将已有的用户添加进入对应的用户组。 - 点击 `gitadmin` `gituser` 或 `gitrestricted` 用户组 - 点击 用户 - 添加已有用户 - 将用户添加进入 `gitadmin` 用户组意味着将授予该用户 Gitea 管理员权限 - 将用户添加进入 `gituser` 用户组意味着允许该用户正常使用 Gitea - 将用户添加进入 `gitrestricted` 用户组意味着用户将不可使用 Gitea **配置提供程序**: - 转至 应用程序 - 应用程序 - 以提供程序创建 - 协议设置: - 重定向 URL/Origin: - `严格` `https://gitea.your.domain/user/oauth2/[auth_name]/callback` - `[auth_name]` 必须与 Gitea 配置中的 `认证名称` 保持一致,大小写敏感。 - 高级协议设置: - 作用域: - 已选作用域: `OpenID 'email'` `OpenID 'openid'` `OpenID 'profile'` `gitea` #### Gitea 配置 - 转至 管理后台 - 身份及认证 - 认证源 - 添加认证源 - 认证类型: `OAuth2` - 认证名称: (必须与 Authentik 配置中的 `[auth_name]` 保持一致,大小写敏感) - OAuth2 提供程序: `OpenID Connect` - 客户端 ID: (Authentik 中对应应用的提供程序的客户端 ID) - 客户端密钥: (Authentik 中对应应用的提供程序的客户端 Secret) - 图标URL: (按照实际情况填写) - OpenID 连接自动发现 URL: (Authentik 中对应应用的提供程序的**OpenID 配置 URL**) - 附加授权范围 (Scopes): `email profile gitea openid` - 全名声明名称/SSH 公钥声明名称: (空) - 必须填写 Claim 声明的名称: `gitea` - 用于提供用户组名称的 Claim 声明名称: `gitea` - 管理员用户组的 Claim 声明值: `admin` - 受限用户组的 Claim 声明值: `restricted` - 如果用户不属于相应的组,从已同步团队中移除用户/启用用户同步/该认证源已经启用: 是 ### Grafana #### Authentik 配置 **配置属性映射**: - 转至 自定义 - 属性映射 - 点击 “创建” - 选择类型: `Scope Mapping` - 创建 Scope Mapping: - 名称: `grafana` - 作用域名称: `grafana` - 表达式: ``` python grafana_claims = {} if request.user.groups.filter(name="Grafana Admins").exists(): grafana_claims["grafana"]= "GrafanaAdmin" elif request.user.groups.filter(name="Grafana Editors").exists(): grafana_claims["grafana"]= "editor" else: grafana_claims["grafana"]= "viewer" return grafana_claims ``` **设立用户组与添加已有用户进入用户组**: 请分别创建名为 `Grafana Admins` `Grafana Editors` 的用户组。 - 转至 目录 - 组 - 点击 “新建组” - 组名: `Grafana Admins` `Grafana Editors` - 超级用户权限: 否 - 父级: (空) - 角色: (空) - 属性: (保持默认) 接下来,将已有的用户添加进入对应的用户组。 - 点击 `Grafana Admins` `Grafana Editors` 用户组 - 点击 用户 - 添加已有用户 - 将用户添加进入 `Grafana Admins` 用户组意味着将授予该用户 Grafana 管理员权限 - 将用户添加进入 `Grafana Editors` 用户组意味着允许该用户修改仪表盘数据 - 不属于上述用户组的用户仅可查看公开的仪表盘 **配置提供程序**: - 转至 应用程序 - 应用程序 - 以提供程序创建 - 协议设置: - 重定向 URL/Origin: - `严格` `https://grafana.your.domain/login/generic_oauth` - 高级协议设置: - 作用域: - 已选作用域: `OpenID 'email'` `OpenID 'openid'` `OpenID 'profile'` `grafana` #### Grafana 配置 - 转至 管理 - 身份验证 - Generic OAuth - 一般设置: - 显示名称: (随意) - Client ID: (Authentik 中对应应用的提供程序的客户端 ID) - Client secret: (Authentik 中对应应用的提供程序的客户端 Secret) - 身份验证样式: (保持默认) - Scopes: `email` `profile` `openid` `grafana` - OpenID Connect Discovery URL: (Authentik 中对应应用的提供程序的**OpenID 配置 URL**) - 允许注册/自动登录: (按照实际情况) - 退出登录重定向网址: (Authentik 中对应应用的提供程序的**注销 URL**) - 登录提示: (空) - 用户映射: - 角色属性路径: `grafana` - 角色属性严格模式/允许分配 Grafana 管理员: 是 ### Immich 请参照 [OAuth Authentication | Immich](https://docs.immich.app/administration/oauth) 完成。 ### Jellyfin !!! tip "建议" 在继续操作前,请确保您拥有另一个管理员账户。如果将 Authentik 关联到 Jellyfin 上唯一的管理员账户,[权限可能会被覆盖](https://github.com/9p4/jellyfin-plugin-sso/issues/212)。 以下内容综合自 [jellyfin-plugin-sso/providers.md at main · 9p4/jellyfin-plugin-sso](https://github.com/9p4/jellyfin-plugin-sso/blob/main/providers.md#authentik) 与 [Integrate with Jellyfin | authentik](https://integrations.goauthentik.io/media/jellyfin/)。 #### Authentik 配置 **设立用户组与添加已有用户进入用户组**: 请创建名为 `jellyfin` 的用户组。 - 转至 目录 - 组 - 点击 “新建组” - 组名: `jellyfin` - 超级用户权限: 否 - 父级: (空) - 角色: (空) - 属性: (保持默认) 接下来,将已有的用户添加进入对应的用户组。 - 点击 `jellyfin` 用户组 - 点击 用户 - 添加已有用户 - 将用户添加进入 `jellyfin` 用户组意味着用户可正常使用 Jellyfin **配置提供程序**: - 转至 应用程序 - 应用程序 - 以提供程序创建 - 协议设置: - 重定向 URL/Origin: - `严格` `http://jellyfin.your.domain/sso/OID/redirect/[Name of OpenID Provider]` - `[Name of OpenID Provider]` 必须与 Jellyfin 配置中的 `Name of OpenID Provider` 保持一致,大小写敏感。 #### Jellyfin 配置 - 转至 管理 - 控制台 - 插件 - 点击 “管理存储库” - “新建存储库” - 存储库名称: `jellyfin plugin sso` - 存储库 URL: `https://raw.githubusercontent.com/9p4/jellyfin-plugin-sso/manifest-release/manifest.json` - 返回上一级 - “可用” - 找到“SSO-Auth” - 安装 - 重启 Jellyfin - 管理 - 控制台 - 插件 - SSO-Auth - 设置 - Name of OpenID Provider: (必须与 Authentik 配置中的 `[Name of OpenID Provider]`保持一致,大小写敏感) - OpenID Endpoint: (Authentik 中对应应用的提供程序的**OpenID 配置 URL**) - OpenID Client ID: (Authentik 中对应应用的提供程序的客户端 ID) - OpenID client secret: (Authentik 中对应应用的提供程序的客户端 Secret) - Enabled/Enable Authorization by Plugin/Enable All Folders: 是 - Roles: `jellyfin` - Enable Live TV RBAC: 是 - Live TV Roles: `jellyfin` - Role Claim: `groups` - Request Additional Scopes: `["groups"]` #### 恢复 Jellyfin 管理员权限 (错误配置 SSO-Auth 插件) **以下内容基于 Windows 11 & Jellyfin Server 10.11.6,仅供参考。** - 暂时移除 SSO 插件: - 停止 Jellyfin 服务器 - 定位 Jellyfin 的 `plugins` 文件夹: - `%LocalAppData%\Jellyfin\plugins` - `C:\ProgramData\Jellyfin\Server\plugins` - 找到名为 sso-auth (或类似名称)的文件夹,将其剪切并移动到桌面暂时备份 - 重新触发配置向导: - 定位 Jellyfin 的 `config` 文件夹: - `%LocalAppData%\Jellyfin\config` - `C:\ProgramData\Jellyfin\Server\config` - 找到 `system.xml` 文件,右键使用记事本打开 - 在文件中搜索 `true` - 将 true 改为 false: `false` - 保存并关闭该文件 - 重新启动 Jellyfin - 在浏览器中打开 `http://localhost:8096`,此时系统会弹出首次安装的设置向导 - 按照向导创建一个全新的管理员账户,添加媒体库的步骤可以跳过 - 设置完成后,使用新创建的管理员账户登录 ### Memos #### Authentik 配置 **配置提供程序**: - 转至 应用程序 - 应用程序 - 以提供程序创建 - 协议设置: - 重定向 URL/Origin: - `严格` `https://memos.your.domain/auth/callback` - 高级协议设置: - 已选作用域: `OpenID 'email'` `OpenID 'openid'` - Subject 模式: `基于用户名` #### Memos 配置 - 转至 设置 - 管理 - 单点登录 - 创建 - 类型: `OAUTH2` - 模板: `Custom` - 名称: (随意) - 标识符过滤器: (空) - 客户端ID: (Authentik 中对应应用的提供程序的客户端 ID) - 客户端密钥: (Authentik 中对应应用的提供程序的客户端 Secret) - 授权端点: (Authentik 中对应应用的提供程序的**授权 URL**) - 令牌端点: (Authentik 中对应应用的提供程序的**令牌 URL**) - 用户端点: (Authentik 中对应应用的提供程序的**用户信息 URL**) - 范围: `openid` `email` - 标识符: `sub` - 显示名称: `sub` - 邮箱: `email` - Avatar URL: (空) ### Proxmox #### Authentik 配置 **设立用户组与添加已有用户进入用户组**: 请创建名为 `proxmox-admins` 的用户组。 - 转至 目录 - 组 - 点击 “新建组” - 组名: `proxmox-admins` - 超级用户权限: 否 - 父级: (空) - 角色: (空) - 属性: (保持默认) 接下来,将已有的用户添加进入对应的用户组。 - 点击 `proxmox-admins` 用户组 - 点击 用户 - 添加已有用户 - 将用户添加进入 `proxmox-admins` 用户组意味着**用户将具有 Proxmox 面板与服务器的管理员权限** **配置提供程序**: - 转至 应用程序 - 应用程序 - 以提供程序创建 - 协议设置: - 重定向 URL/Origin: - `严格` `https://proxmox.your.domain` #### Proxmox 配置 **配置单点登录**: - 转至 数据中心 - 权限 - 领域 - 点击 添加 - OpenID 连接服务器 - 发行人URL: (Authentik 中对应应用的提供程序的**OpenID 配置颁发者**) - 领域: (指单点登录服务的名称,随意) - 客户端 ID: (Authentik 中对应应用的提供程序的客户端 ID) - 客户端秘钥: (Authentik 中对应应用的提供程序的客户端 Secret) - 范围: (保持默认) - 默认: (按照实际情况) - 自动创建用户: 是 - 用户名声明: `username` - Autocreate Groups: 否 - Groups Claim: `groups` - Overwrite Groups: 否 - 提示: (保持默认) - Query userinfo endpoint: 是 **创建群组**: - 转至 数据中心 - 权限 - 群组 - 点击 创建 - 名称: `[Authentik 用户组名称]-[领域名称]` - 若 Authentik 用户组名称为 `proxmox-admins`,领域名称为 `SSO`,那么该群组的名称为 `proxmox-admins-SSO` **预配置权限**: - 转至 数据中心 - 权限 - 点击 添加 - 群组权限 - 路径: `/` - 群组: (上一步创建的群组) - 角色: `Administrator` - 继承: 是 ### Vaultwarden 以下内容基本参照 [Enabling SSO support using OpenId Connect · dani-garcia/vaultwarden Wiki](https://github.com/dani-garcia/vaultwarden/wiki/Enabling-SSO-support-using-OpenId-Connect) 完成。 #### Authentik 配置 **配置提供程序**: - 转至 应用程序 - 应用程序 - 以提供程序创建 - 协议设置: - 重定向 URL/Origin: - `严格` `https://vaultwarden.your.domain/identity/connect/oidc-signin` - 高级协议设置: - 已选作用域: `OpenID 'email'` `OpenID 'openid'` `OpenID 'profile'` `OpenID 'offline_access'` #### Vaultwarden 配置 将以下内容添加进入 `docker-compose.yml` 文件 `vaultwarden` 服务的 `environment` 部分: ``` yaml title="docker-compose.yml" environment: SIGNUPS_ALLOWED: false # 不允许注册 SSO_ENABLED: true # 启用 SSO SSO_ONLY: false # 仅采用 SSO 登录,不允许密码登录 SSO_SIGNUPS_MATCH_EMAIL: true # SSO 登录需匹配已有账户的邮箱 SSO_AUTHORITY: "xxx" # Authentik 中对应应用的提供程序的 OpenID 配置颁发者 SSO_SCOPES: "openid profile email offline_access" SSO_CLIENT_ID: "xxx" # Authentik 中对应应用的提供程序的客户端 ID SSO_CLIENT_SECRET: "xxx" # Authentik 中对应应用的提供程序的客户端 Secret ``` ### Wallos #### Authentik 配置 **配置提供程序**: - 转至 应用程序 - 应用程序 - 以提供程序创建 - 协议设置: - 重定向 URL/Origin: - `严格` `https://wallos.your.domain` #### Wallos 配置 - 转至 管理员 - OIDC 设置 - Enable OIDC/OAuth: 是 - Provider Name: (随意) - Client ID: (Authentik 中对应应用的提供程序的客户端 ID) - Client Secret: (Authentik 中对应应用的提供程序的客户端 Secret) - Auth URL: (Authentik 中对应应用的提供程序的**授权 URL**) - Token URL: (Authentik 中对应应用的提供程序的**令牌 URL**) - User Info URL: (Authentik 中对应应用的提供程序的**用户信息 URL**) - Redirect URL: `https://wallos.your.domain` - Logout URL: (Authentik 中对应应用的提供程序的**注销 URL**) - User Identifier Field: `sub` - Scopes: `openid` `email` `profile` - 当使用 OIDC 登录时自动创建用户/禁用密码登录: (依照实际情况) ## 参考/进一步阅读 - [Memos 对接 Authentik | 某科学的贝壳](https://blog.ning.moe/posts/authentik-OAuth2-memos/) - [Using Authentik for Proxmox PVE 8 user and group mapping – Inteller.net Site](https://www.inteller.net/notes/2025/04/27/using-authentik-for-proxmox-pve-8-user-and-group-mapping/) - [Authentik 教程系列 - ECWU's Notebook](https://ecwuuuuu.com/post/authentik-tutorial-1-introduction-and-install/) - [Gist - ECWU's Notebook](https://ecwuuuuu.com/series/gist/) - [Authentik 教程系列 - 哔哩哔哩(UP:ecwuuu)](https://www.bilibili.com/video/BV1pm41167WK/)