headscale实现oidc登录

前言 本文将以 Casdoor 作为 OIDC 身份提供商,详细介绍如何为 Headscale 配置 OIDC 认证 本文所使用的headscale版本:0.26.1 创建casdoor应用 首先,我们需要在 Casdoor 中为 Headscale 创建一个应用,以便 Casdoor 能够识别并处

前言

本文将以 Casdoor 作为 OIDC 身份提供商,详细介绍如何为 Headscale 配置 OIDC 认证

本文所使用的headscale版本:0.26.1

创建casdoor应用

首先,我们需要在 Casdoor 中为 Headscale 创建一个应用,以便 Casdoor 能够识别并处理来自 Headscale 的认证请求

  1. 登录到您的 Casdoor 管理后台

  2. 在左侧导航栏中,选择 “应用(Applications)”

  3. 点击右上角的 “添加应用(Add Application)” 按钮

  4. 填写应用信息:

    • 组织(Organization): 选择 built-in 或您自己的组织

    • 名称(Name): 填写一个易于识别的名称,例如 headscale

    • 显示名称(Display name): 可以填写 Headscale VPN

    • 重定向URL (Redirect URLs): 填写 Headscale 的 OIDC 回调地址。地址格式为 YOUR_HEADSCALE_URL/oidc/callback

配置 Headscale

接下来,我们需要编辑 Headscale 的配置文件 config.yaml,告诉它如何与 Casdoor 通信

  1. 打开您的 Headscale config.yaml 文件

  2. 找到 oidc 部分(如果不存在,请自行添加),并按照以下格式填写:

    oidc:
      # 如果设置为 true,Headscale 在启动时会检查是否能成功连接到 OIDC provider。
      # 如果连接失败,Headscale 将不会启动。
      only_start_if_oidc_is_available: true
    
      # OIDC Provider 的地址,即您的 Casdoor 地址。
      issuer: "https://auth.bokro.cn"
    
      # 客户端 ID,粘贴您在 Casdoor 中获取的 Client ID。
      client_id: "Client ID"
    
      # 客户端密钥,粘贴您在 Casdoor 中获取的 Client Secret。
      client_secret: "Client Secret"
    
      # 定义了我们希望从 Casdoor 获取的用户信息范围。
      # openid 是 OIDC 必须的。
      # profile 用于获取用户名等基本信息。
      # email 用于获取用户邮箱。
      # groups 可用于未来结合 ACL 进行权限控制。注:0.26.1版本存在因oidc group导致acl不生效的bug,本文不过多说明及配置,详见官网
      scope: ["openid", "profile", "email", "groups"]
    
      # PKCE是一种安全增强特性。
      pkce:
        enabled: false
        # method: S256 # 当 enabled 为 false 时,此行可以省略

验证登录流程

现在,所有配置都已完成!让我们来体验一下全新的登录流程。

  1. 在一台新的机器上,打开终端,执行 tailscale 登录命令(注意替换为您自己的 Headscale 服务地址):

tailscale login --login-server https://hs.bokro.cn
  1. 终端会输出一个 URL,并提示您在浏览器中打开它

To authenticate, visit:

        https://hs.bokro.cn/oidc/register?state=xxxxxxxxxxxxxxxxxxx
  1. 复制这个 URL 到您的浏览器中打开。浏览器会自动重定向到 Casdoor 的登录页面。见下图

  1. 使用您在 Casdoor 中创建或配置的用户账户进行登录。

  2. 之后,浏览器会显示一个登录成功页面,提示您可以关闭此窗口。

  1. 回到终端,您会看到 tailscale 客户端已经成功通过验证,并连接到了您的 Headscale 网络!

结语

通过将 Headscale 与 Casdoor 进行 OIDC 集成,我们现在已经将用户身份验证交给了专业的身份提供商。这极大的改变了过去繁琐的密钥管理模式,还带来了单点登录、集中化账户管理和更高安全性的巨大优势。

现在,您的 Headscale 网络拥有了一个现代化、可扩展且用户友好的认证系统。当需要为新成员授权时,您只需在 Casdoor 中创建一个账户,而不用去其他地方额外新建了!

如果配置了ACL,那么此用户将不会被赋予任何权限,需要您手动配置

Comment