To Dark Mode
Featured Images
Photo by Zulfugar Karimov on Unsplash

Authentik 教程系列:社交登录

Zhenghao Wu

Saturday, December 20, 2025 5 min read

Status: Finished Confidence: likely

Post Details

This post is part 7 of 7 in the Authentik series.

View all articles in this series
  1. Authentik 教程系列:简介和安装配置
  2. Authentik 教程系列:反向代理的配置
  3. Authentik 教程系列:将应用通过 OIDC,SAML,LDAP 协议接入
  4. Authentik 教程系列:通过反向代理和 ForwardAuth 接入任何应用
  5. Authentik 视频教程 - 合集
  6. Authentik 教程系列:服务的迁移
  7. Authentik 教程系列:社交登录 (current)
Table of Contents

今天我们来讲讲社交登录(Social Login),也就是允许用户使用第三方账号(如 Google、GitHub、Facebook 等)登录到我们的 Authentik 系统中。随着教程的深入,要实现这些功能不再有简便的系统预设/流程可用,会涉及: Source 的概念,Flow 流程的详细配置,以及 Policy 策略的使用。

之前我们都在使用 Authentik 来当各种服务的身份提供者(Identity Provider, IdP),但有时我们也希望 Authentik 能够作为一个服务提供者(Service Provider, SP),允许用户通过其他身份提供者登录。这就是社交登录的核心概念。

这些身份提供者被称为 Source (来源),Authentik 通实现了多种协议,包括 OAuth2、OIDC 和 SAML。今天我们主要演示两个基于 OAuth 协议的提供者:GitHub 和飞书(Lark)。其中 GitHub 是官方支持的一种类型,而飞书则是通过自定义 OpenID OAuth Source 实现的。

GitHub 社交登录配置

创建 OAuth 应用

首先,我们需要创建一个 GitHub OAuth 应用,进入 GitHub 的开发者设置页面,Developer settings -> OAuth Apps -> New OAuth App

填写应用信息:

创建应用后,记下 Client ID 和 Client Secret(应用创建好后,Secret 需要新建)。

在 Authentik 中配置 GitHub Source

在 Authentik 管理界面,导航到 Directory -> Federation and Social login -> Create。

弹出的模态窗口中:

保存后,我们就创建好了一个 GitHub OAuth Source。

配置 Flow 流程

接下来,我们需要配置一个 Flow 流程来使用这个 Source。效果是用户在登录窗有一个 GitHub 登录按钮(图标),点击后跳转到 GitHub 授权页面。

在 Authentik 管理界面,导航到 Flows and Stages -> Flows,选择 default-authentication-flow 进行编辑。 这里要编辑的是系统绑定的默认认证流程,如果你有自定义的认证流程,可以选择编辑你自己的流程。检查系统具体使用的流程,可以在管理界面 -> System -> Brands -> authentik-default -> Default Flow -> Authentication Flow 查看。

在 Flow 编辑页面,点击 Stage Bindings 选项卡,找到 default-authentication-identification 阶段,点击 Edit Stages。下拉找到 Source Settings,能在 Available Sources 中看到我们刚才创建的 GitHub OAuth Source,选中它添加到 Selected Sources 列表中,保存。(下面还有个Show sources’ labels选项,可以勾选以显示文本标签)

然后我们还需要修改 default-source-enrollment Flows,在 Stage Bindings 选项卡中,找到 default-source-enrollment-write 阶段,找到 User Type。这里有三个选项:

这个 Flow 默认是选择 External,我们需要改成 Internal,否则用户登录后无法进入 Authentik 系统。(如果你希望用户只能登录到绑定的应用,而不能登录到 Authentik 系统本身,可以保持 External 不变。)

保存后,我们就完成了 GitHub 社交登录的配置。现在用户在登录页面应该能看到 GitHub 的登录按钮,点击后会跳转到 GitHub 授权页面,授权后即可登录到 Authentik 系统。

飞书社交登录配置

第二个例子是飞书,Authentik 官方并没有直接支持飞书的 Source 类型(虽然有人提交了一个 PR),所以我们需要通过自定义 OpenID OAuth Source 来实现。而且飞书的 OAuth 实现有些特殊,需要注意一些配置细节。

我们这里演示的是飞书国内版(feishu.cn),如果你使用的是国际版(lark.com),域名和 URL 有所不同,但我没有测试过国际版,具体配置请参考飞书的官方文档。

创建飞书应用

首先,我们需要在飞书开放平台创建一个应用,进入 飞书开放平台。登录后进入控制台,创建一个新应用(按要求名字和描述等信息)。

在应用创建好后,进入应用的开发配置 -> 权限管理,添加以下权限(搜索添加):

然后在基础信息 -> 凭证与基础信息 中,记下 App ID 和 App Secret。

我们还需要配置重定向 URL:位置在开发配置 -> 安全设置,添加重定向 URL。需要注意的是,这个 URL 在 Authentik 创建好 Source 后能看到,格式是 http://authentik.company/source/oauth/callback/{slug}/,其中 {slug} 是你在 Authentik 创建 Source 时填写的 Slug。比如我们后面创建的 Source Slug 是 feishu,那么重定向 URL 就是 http://authentik.company/source/oauth/callback/feishu/

创建好之后,记得去发布应用,让它生效。

在 Authentik 中配置飞书 Source

配置参考了 fangpsh’s blog 的一篇文章,链接在参考资料部分。

在 Authentik 管理界面,导航到 Directory -> Federation and Social login -> Create。 弹出的模态窗口中:

保存后,我们就创建好了一个飞书 OAuth Source。

配置 Flow 流程

这部分和 GitHub 的配置类似,我们需要在 default-authentication-flow 中添加飞书 Source。具体步骤是一样的,这里不再赘述。

参考资料

Article Card

For "Authentik 教程系列:社交登录"

Author Zhenghao Wu
Publish & Update Date 2025-12-20
Tags Homelab Docker Container Images Service Self-host Authentication SAML OIDC OpenID Connect
Comment Section disabled in draft mode

Related Posts