Tailscaleロゴ

カスタムOIDCプロバイダー

最終検証日:
翻訳: 竹洞 陽一郎

TailscaleはOpenID Connect(OIDC)に対応したIDプロバイダーと連携できます。
本ページで説明する手順が必要になるのは、tailnetを新規に作成する初回のみです。
サインアップの過程が完了すれば、Tailscaleは他の対応IDプロバイダーと同様に動作します。
OIDCについての詳細は、Welcome to OpenID Connectを参照してください。

要件

WebFingerの設定

カスタムOIDCプロバイダーをTailscaleで使用するには、自分のドメイン上にWebFingerエンドポイントを設定する必要があります。
WebFingerは、ドメインに対する管理者権限とissuer URLのディスカバリーを検証するものです。
WebFingerとOIDCのissuerディスカバリーについての詳細は、RFC 7033を参照してください。

WebFingerエンドポイントは、https://${domain}/.well-known/webfingerで提供する必要があり、レスポンスのJRD内にissuer URLを含める必要があります。
例:

{
  "subject": "acct:${email}",
  "links": [
    {
      "rel": "http://openid.net/specs/connect/1.0/issuer",
      "href": "${issuer URL}"
    }
  ]
}

WebFingerエンドポイントは、セットアップ時に指定したメールアドレスのドメイン上でホストする必要があります。
JRDに指定するissuer URLは、/.well-known/openid-configuration内のissuer URLと完全に一致させる必要があります。
詳細は、RFC 7033: WebFinger仕様内のIdentity Provider Discovery for OpenID Connectのセクションを参照してください。

WebFingerエンドポイントを検証する手順は、次のとおりです。

  1. ブラウザでWebFinger Lookupツールを開きます。
  2. 「Lookup WebFinger」の検索ボックスに、ユーザーのメールアドレスを入力します。
  3. 検索アイコンを選択します。
  4. 結果を確認し、自分のエンドポイントが有効かどうかを判断します。

Tailscaleは、WebFingerエンドポイントから取得したissuerの値を、初回のセットアップ時にのみ使用します。
カスタムOIDCプロバイダーをTailscaleで使い始めた後、新しいissuerに変更する場合は、WebFingerエンドポイント側のissuerを更新した上で、IDプロバイダーを切り替える手順を行ってください。

IDプロバイダー側の設定

カスタムOIDCセットアップに使用するIDプロバイダーは、OIDC仕様とTailscaleの要件の両方を満たす必要があります。

Tailscaleには、次の情報を入力する必要があります。

スコープは、認証リクエストに含める必要のある情報を指定します。
必須のスコープは、openidprofileemailです。
Tailscaleは、動作に必要な最小限のスコープのみをリクエストします。
データの利用方法についての詳細は、プライバシーポリシーを参照してください。

プロンプトは、ユーザーに対する認証ページ上の挙動と要件を指定します。
プロンプトは省略可能で、Tailscaleのセットアップ画面でサポートされる値は、noneconsent(デフォルト)、loginselect_accountです。
個々のIDプロバイダーやその設定によっては、これらの値の一部または全部がサポートされない場合があります。
詳細は、OIDCのAuthentication Request仕様を参照してください。

コールバックURLは、次のURLをIDプロバイダーの設定に登録する必要があります。

https://login.tailscale.com/a/oauth_response

プロバイダーごとの追加設定

特定のIDプロバイダーでは、追加の設定が必要になる場合があります。

IDプロバイダー必要な追加設定
Auth0なし
AutheliaAutheliaのドキュメントにあるTailscaleの項目の手順を参照してください。
AuthentikAuthentikのドキュメントにあるIntegrate with Tailscaleの項目の手順を参照してください。
AWS Cognitoなし
Codebergなし
Dexなし
Duoなし
FoxIDsFoxIDsのドキュメントにあるConnect to Tailscale with OpenID Connectの項目の手順を参照してください。
Giteaなし
GitLabサインアップまたはサインイン時に、ブラウザでGitLabにアクティブなセッションが必要です。
GitLab self-managedサインアップまたはサインイン時に、ブラウザでGitLabにアクティブなセッションが必要です。
JumpCloudService Provider Attribute Nameのemailnameを、JumpCloud Attribute Nameのemailfullnameにマッピングし、Client Authentication Typeを「Client Secret Basic」に設定してください。
Keycloakなし
Ory Networkなし
Ory self-hostedなし
Ping Identityなし
Pocket IDなし。詳細は、YouTube動画Use a custom OIDC and passkeys to log in to Tailscale with Pocket IDを参照してください。
ZITADEL Cloudなし
ZITADEL Open Sourceなし
ZohoServer-based Applicationsのクライアントタイプでセットアップする必要があります。アプリケーションのIssuer URLは、そのアプリケーションを作成したデータセンターのリージョンと一致させる必要があります。たとえば、米国リージョンのアプリケーションではhttps://accounts.zoho.comを使用し、カナダリージョンのアプリケーションではhttps://accounts.zohocloud.caを使用します。Zohoのリージョンは、Zohoダッシュボードにアクセスする際に使用しているドメインで確認できます。複数のZohoリージョンにユーザーがいる場合は、そのアプリケーションの「設定(Settings)」タブにある「すべてのデータセンターで同じOAuth資格情報を使用する」のチェックボックスを有効にする必要があります。

Tailscale側の設定

  1. 管理コンソールのSign up with OIDCページにアクセスします。
    ODICでサインアップ
    OIDCでサインアップ
    または、Tailscaleアカウントのサインアップ時に「Sign up with OIDC」を選択します。
    Tailscaleのサインアップ画面でOIDCを選択する
    Tailscaleへのサインアップ時に「Sign up with OIDC」を選択する
  2. 「Email address」フィールドに、管理者の完全なメールアドレスを入力します。メールアドレスのドメインは、WebFingerエンドポイントを提供しているドメイン、およびTailscaleで使用するドメインと一致させる必要があります。
  3. 「Get OIDC Issuer」を選択します。TailscaleがWebFingerエンドポイントからissuerを取得できた場合、「Issuer」フィールドに表示されます。
  4. 「Client ID」フィールドに、OIDCプロバイダー側でTailscale用に生成されたIDを入力します。
  5. 「Client secret」フィールドに、プロバイダー側でTailscale用に生成されたクライアントシークレットを入力します。
  6. (省略可能)「Prompts」フィールドで、ユーザー認証フローに使用するプロンプトを1つ以上選択します。値を選択する必要はありません。これらの値は、OIDCのAuthentication Request仕様で定義されています。noneを選択した場合、他のプロンプトを選択することはできません。
  7. 「Sign up with OIDC」を選択します。認証のため、プロバイダーにリダイレクトされます。
  8. ステップ2で入力したメールアドレスを使って、プロバイダーにログインします。認証が完了すると、Tailscaleの管理コンソールにリダイレクトされます。

Tailscale用にOIDCを設定したユーザーは、そのtailnetの最初のユーザーとなり、tailnetのOwnerになります。

追加のtailnetユーザー

同じドメインの追加ユーザーがTailscaleにログインする場合、メールアドレスを入力すれば、認識済みのIDプロバイダーへ認証のためリダイレクトされます。

既存tailnetの移行

既存のtailnetがある場合は、IDプロバイダーを切り替えることで、カスタムOIDCプロバイダーへ移行できます。
その際は、ドメイン上にWebFingerエンドポイントが正しく設定されている必要があります。

カスタムOIDCプロバイダーに移行できるのは、カスタムドメインを使用しているTailscaleアカウントのみです。
たとえば、@yourcustomdomain.comのようなアカウントは移行できますが、@gmail.comのようなカスタムでないドメインは移行できません。

補足事項