カスタムOIDCプロバイダー
最終検証日:
翻訳: 竹洞 陽一郎
TailscaleはOpenID Connect(OIDC)に対応したIDプロバイダーと連携できます。
本ページで説明する手順が必要になるのは、tailnetを新規に作成する初回のみです。
サインアップの過程が完了すれば、Tailscaleは他の対応IDプロバイダーと同様に動作します。
OIDCについての詳細は、Welcome to OpenID Connectを参照してください。
要件
- ドメインの所有権の証明、およびWebFingerによるOIDCディスカバリー。
openid、profile、emailスコープを使用し、コールバックURLに対応した、OIDCベースのSSOを備えたIDプロバイダー。- OIDCプロバイダーは、ES256またはRSA署名のいずれかを使用する必要があります。RSAの最小鍵長は2048ビットです。
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エンドポイントを検証する手順は、次のとおりです。
- ブラウザでWebFinger Lookupツールを開きます。
- 「Lookup WebFinger」の検索ボックスに、ユーザーのメールアドレスを入力します。
- 検索アイコンを選択します。
- 結果を確認し、自分のエンドポイントが有効かどうかを判断します。
Tailscaleは、WebFingerエンドポイントから取得したissuerの値を、初回のセットアップ時にのみ使用します。
カスタムOIDCプロバイダーをTailscaleで使い始めた後、新しいissuerに変更する場合は、WebFingerエンドポイント側のissuerを更新した上で、IDプロバイダーを切り替える手順を行ってください。
IDプロバイダー側の設定
カスタムOIDCセットアップに使用するIDプロバイダーは、OIDC仕様とTailscaleの要件の両方を満たす必要があります。
Tailscaleには、次の情報を入力する必要があります。
- 前のセクションで説明した、WebFingerエンドポイントから取得したissuer URL。
- クライアントID。
- IDプロバイダーから発行されたクライアントシークレット。
スコープは、認証リクエストに含める必要のある情報を指定します。
必須のスコープは、openid、profile、emailです。
Tailscaleは、動作に必要な最小限のスコープのみをリクエストします。
データの利用方法についての詳細は、プライバシーポリシーを参照してください。
プロンプトは、ユーザーに対する認証ページ上の挙動と要件を指定します。
プロンプトは省略可能で、Tailscaleのセットアップ画面でサポートされる値は、none、consent(デフォルト)、login、select_accountです。
個々のIDプロバイダーやその設定によっては、これらの値の一部または全部がサポートされない場合があります。
詳細は、OIDCのAuthentication Request仕様を参照してください。
コールバックURLは、次のURLをIDプロバイダーの設定に登録する必要があります。
https://login.tailscale.com/a/oauth_response
プロバイダーごとの追加設定
特定のIDプロバイダーでは、追加の設定が必要になる場合があります。
| IDプロバイダー | 必要な追加設定 |
|---|---|
| Auth0 | なし |
| Authelia | AutheliaのドキュメントにあるTailscaleの項目の手順を参照してください。 |
| Authentik | AuthentikのドキュメントにあるIntegrate with Tailscaleの項目の手順を参照してください。 |
| AWS Cognito | なし |
| Codeberg | なし |
| Dex | なし |
| Duo | なし |
| FoxIDs | FoxIDsのドキュメントにあるConnect to Tailscale with OpenID Connectの項目の手順を参照してください。 |
| Gitea | なし |
| GitLab | サインアップまたはサインイン時に、ブラウザでGitLabにアクティブなセッションが必要です。 |
| GitLab self-managed | サインアップまたはサインイン時に、ブラウザでGitLabにアクティブなセッションが必要です。 |
| JumpCloud | Service Provider Attribute Nameのemailとnameを、JumpCloud Attribute Nameのemailとfullnameにマッピングし、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 | なし |
| Zoho | Server-based Applicationsのクライアントタイプでセットアップする必要があります。アプリケーションのIssuer URLは、そのアプリケーションを作成したデータセンターのリージョンと一致させる必要があります。たとえば、米国リージョンのアプリケーションではhttps://accounts.zoho.comを使用し、カナダリージョンのアプリケーションではhttps://accounts.zohocloud.caを使用します。Zohoのリージョンは、Zohoダッシュボードにアクセスする際に使用しているドメインで確認できます。複数のZohoリージョンにユーザーがいる場合は、そのアプリケーションの「設定(Settings)」タブにある「すべてのデータセンターで同じOAuth資格情報を使用する」のチェックボックスを有効にする必要があります。 |
Tailscale側の設定
-
管理コンソールのSign up with OIDCページにアクセスします。
または、Tailscaleアカウントのサインアップ時に「Sign up with OIDC」を選択します。
OIDCでサインアップ
Tailscaleへのサインアップ時に「Sign up with OIDC」を選択する - 「Email address」フィールドに、管理者の完全なメールアドレスを入力します。メールアドレスのドメインは、WebFingerエンドポイントを提供しているドメイン、およびTailscaleで使用するドメインと一致させる必要があります。
- 「Get OIDC Issuer」を選択します。TailscaleがWebFingerエンドポイントからissuerを取得できた場合、「Issuer」フィールドに表示されます。
- 「Client ID」フィールドに、OIDCプロバイダー側でTailscale用に生成されたIDを入力します。
- 「Client secret」フィールドに、プロバイダー側でTailscale用に生成されたクライアントシークレットを入力します。
- (省略可能)「Prompts」フィールドで、ユーザー認証フローに使用するプロンプトを1つ以上選択します。値を選択する必要はありません。これらの値は、OIDCのAuthentication Request仕様で定義されています。
noneを選択した場合、他のプロンプトを選択することはできません。 - 「Sign up with OIDC」を選択します。認証のため、プロバイダーにリダイレクトされます。
- ステップ2で入力したメールアドレスを使って、プロバイダーにログインします。認証が完了すると、Tailscaleの管理コンソールにリダイレクトされます。
Tailscale用にOIDCを設定したユーザーは、そのtailnetの最初のユーザーとなり、tailnetのOwnerになります。
追加のtailnetユーザー
同じドメインの追加ユーザーがTailscaleにログインする場合、メールアドレスを入力すれば、認識済みのIDプロバイダーへ認証のためリダイレクトされます。
既存tailnetの移行
既存のtailnetがある場合は、IDプロバイダーを切り替えることで、カスタムOIDCプロバイダーへ移行できます。
その際は、ドメイン上にWebFingerエンドポイントが正しく設定されている必要があります。
カスタムOIDCプロバイダーに移行できるのは、カスタムドメインを使用しているTailscaleアカウントのみです。
たとえば、@yourcustomdomain.comのようなアカウントは移行できますが、@gmail.comのようなカスタムでないドメインは移行できません。
補足事項
- セルフホスト型のIDプロバイダーは、インターネット上に公開されている必要があります。IPブロックリストの設定は、tailnetへのサインアップや認証を妨げる場合があります。
- カスタムOIDCプロバイダーのセットアップでは、ユーザーおよびグループのプロビジョニングはサポートされていません。
- 同じドメインからtailnetに接続するすべてのユーザーは、同じIDプロバイダーを使用する必要があります。
- ユーザーがTailscaleからログアウトしても、IDプロバイダー側から自動的にログアウトされるわけではありません。IDプロバイダー側でログアウトしなかった場合、Tailscaleに再接続する際に再認証が不要になります。
id_tokensに対するJSON Web Encryption(JWE)のアクセストークンはサポートされていません。