Self-HostedなTailscaleサーバのHeadscaleを、Entra ID認証で利用できるようにする設定をしたのでメモとして残しておきます。
Headscaleは認証にOIDC (OpenID Connect) が利用できます。
Entra IDはOIDCに対応しているので、Entra IDテナントのユーザーがHeadscaleを利用できるように設定することができます。
Entra IDの設定
アプリの登録
OIDC ProviderとしてEntra IDを利用する場合には「アプリ」を作成します。
- Azureポータル (https://portal.azure.com/) にアクセスする
- Entra IDを開く
- サイドメニュー [管理] - [アプリの登録] を開く
- 「+新規作成」ボタンをクリックする
- 必要な情報を入力し、[登録] ボタンを押す
- このアプリケーションのユーザー向け表示名 「Headscale」
-
この組織ディレクトリのみに含まれるアカウント (シングル テナント)
を選択 - リダイレクト URI 「Web」「https://{Headscaleサーバのホスト名}/oidc/callback」
認証情報の作成
- サイドメニュー [管理] - [証明書とシークレット] を開く
- [クライアントシークレット] タブで [+新しいクライアントシークレット] を作成する
- 作成されたシークレットの [値] をメモしておく (二度と表示できません)
- サイドメニュー [概要] を開く
- 表示されている[アプリケーション (クライアントID)]と[ディレクトリ (テナント) ID]もメモしておく
Headscale の設定
Headscaleの設定にOIDCの項目を追加する。
参考 : Configuring headscale to use OIDC authentication
/etc/headscale/config.yaml (抜粋)
oidc:
issuer: "https://login.microsoftonline.com/[テナントID]/v2.0"
client_id: "[クライアントID]"
client_secret: "[クライアントシークレット]"
scope: ["openid", "profile", "email"]
extra_params:
domain_hint: [テナントで利用しているドメイン名]
prompt: select_account
設定を変更したら再起動します。
sudo systemctl restart headscale
これにより、Headscaleのログイン時にEntra IDのログイン画面が表示されるようになります