
プラガブルなコネクタを備えたOpenID Connect (OIDC) アイデンティティおよびOAuth 2.0プロバイダー

Dexは、OpenID Connectを使用して他のアプリの認証を駆動するアイデンティティサービスです。
Dexは、「コネクタ」を介して他のアイデンティティプロバイダーへのポータルとして機能します。これにより、dexはLDAPサーバー、SAMLプロバイダー、またはGitHub、Google、Active Directoryなどの確立されたアイデンティティプロバイダーへの認証を委任できます。クライアントはdexと通信するための認証ロジックを一度記述するだけでよく、dexが各バックエンドのプロトコルを処理します。
IDトークンは、OpenID Connectによって導入されたOAuth2拡張であり、dexの主要機能です。IDトークンは、dexによって署名され、エンドユーザーの身元を証明するOAuth2レスポンスの一部として返されるJSON Web Tokens(JWT)です。JWTの例は次のようになります:
eyJhbGciOiJSUzI1NiIsImtpZCI6IjlkNDQ3NDFmNzczYjkzOGNmNjVkZDMyNjY4NWI4NjE4MGMzMjRkOTkifQ.eyJpc3MiOiJodHRwOi8vMTI3LjAuMC4xOjU1NTYvZGV4Iiwic3ViIjoiQ2djeU16UXlOelE1RWdabmFYUm9kV0kiLCJhdWQiOiJleGFtcGxlLWFwcCIsImV4cCI6MTQ5Mjg4MjA0MiwiaWF0IjoxNDkyNzk1NjQyLCJhdF9oYXNoIjoiYmk5NmdPWFpTaHZsV1l0YWw5RXFpdyIsImVtYWlsIjoiZXJpYy5jaGlhbmdAY29yZW9zLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJncm91cHMiOlsiYWRtaW5zIiwiZGV2ZWxvcGVycyJdLCJuYW1lIjoiRXJpYyBDaGlhbmcifQ.OhROPq_0eP-zsQRjg87KZ4wGkjiQGnTi5QuG877AdJDb3R2ZCOk2Vkf5SdP8cPyb3VMqL32G4hLDayniiv8f1_ZXAde0sKrayfQ10XAXFgZl_P1yilkLdknxn6nbhDRVllpWcB12ki9vmAxklAr0B1C4kr5nI3-BZLrFcUR5sQbxwJj4oW1OuG6jJCNGHXGNTBTNEaM28eD-9nhfBeuBTzzO7BKwPsojjj4C9ogU4JQhGvm_l4yfVi0boSx8c0FX3JsiB0yLa1ZdJVWVl9m90XmbWRSD85pNDQHcWZP9hR6CMgbvGkZsgjG32qeRwUL_eNkNowSBNWLrGNPoON1gMg
IDトークンには、どのクライアントアプリがユーザーをログインさせたか、トークンの有効期限、およびユーザーの身元を証明する標準クレームが含まれています。
{
"iss": "http://127.0.0.1:5556/dex",
"sub": "CgcyMzQyNzQ5EgZnaXRodWI",
"aud": "example-app",
"exp": 1492882042,
"iat": 1492795642,
"at_hash": "bi96gOXZShvlWYtal9Eqiw",
"email": "[email protected]",
"email_verified": true,
"groups": [
"admins",
"developers"
],
"name": "Jane Doe"
}
これらのトークンはdexによって署名され、標準ベースのクレームを含むため、他のサービスはこれらをサービス間の資格情報として利用できます。dexが発行するOpenID Connect IDトークンをすでに利用できるシステムには、次のものがあります:
IDトークンのリクエスト方法や検証方法の詳細については、「dexを使用するアプリの作成」を参照してください。
Dexは、Custom Resource Definitionsを使用して任意のKubernetesクラスター上でネイティブに動作し、OpenID Connectプラグインを介してAPIサーバーの認証を駆動できます。kubelogin や kubectl などのクライアントは、dexがサポートする任意のアイデンティティプロバイダーを介してクラスターにログインできるユーザーに代わって動作できます。
ユーザーがdexを介してログインする場合、ユーザーの身元は通常、LDAPディレクトリやGitHubの組織など、別のユーザー管理システムに保存されています。Dexは、クライアントアプリとアップストリームのアイデンティティプロバイダーの間のシム(仲介役)として機能します。クライアントはdexに問い合わせるためにOpenID Connectを理解するだけでよく、dexは他のユーザー管理システムに問い合わせるためのさまざまなプロトコルを実装しています。

「コネクタ」は、dexが別のアイデンティティプロバイダーに対してユーザーを認証するために使用する戦略です。Dexは、GitHub、LinkedIn、Microsoftなどの特定のプラットフォームを対象とするコネクタと、LDAPやSAMLなどの確立されたプロトコルを対象とするコネクタを実装しています。
コネクタによっては、プロトコルの制限により、dexがリフレッシュトークンを発行したり、グループメンバーシップクレームを返したりできない場合があります。たとえば、SAMLにはアサーションを非対話的に更新する方法がないため、ユーザーがSAMLコネクタを介してログインした場合、dexはクライアントにリフレッシュトークンを発行しません。リフレッシュトークンのサポートは、kubectl などのオフラインアクセスを必要とするクライアントに必須です。
Dexは以下のコネクタを実装しています:
安定版、ベータ版、アルファ版の定義は次のとおりです:
コネクタ機能の変更や非推奨化はすべて、リリースノートで発表されます。
入門、設定、使用方法のガイドについては、公式ドキュメントを参照してください。
脆弱性の報告方法の詳細については、セキュリティポリシーを参照してください。
開発環境のセットアップ、ガイドライン、プルリクエストの提出方法については、CONTRIBUTING.mdを参照してください。
このプロジェクトはApache License, Version 2.0の下でライセンスされています。
| 名前 | リフレッシュトークン対応 | グループクレーム対応 | preferred_usernameクレーム対応 | ステータス | 備考 |
|---|
| LDAP | 対応 | 対応 | 対応 | 安定 | |
| GitHub | 対応 | 対応 | 対応 | 安定 | |
| SAML 2.0 | 非対応 | 対応 | 非対応 | 安定 | 警告:メンテナンスされておらず、認証バイパスの脆弱性がある可能性があります(#1884) |
| GitLab | 対応 | 対応 | 対応 | ベータ | |
| OpenID Connect | 対応 | 対応 | 対応 | ベータ | Salesforce、Azureなどを含みます。 |
| OAuth 2.0 | 非対応 | 対応 | 対応 | アルファ | |
| 対応 | 対応 | 対応 | アルファ | ||
| 対応 | 非対応 | 非対応 | ベータ | ||
| Microsoft | 対応 | 対応 | 非対応 | ベータ | |
| AuthProxy | 非対応 | 対応 | 非対応 | アルファ | Apache2 mod_authなどの認証プロキシ。 |
| Bitbucket Cloud | 対応 | 対応 | 非対応 | アルファ | |
| OpenShift | 対応 | 対応 | 非対応 | アルファ | |
| Atlassian Crowd | 対応 | 対応 | 対応 * | ベータ | preferred_usernameクレームは設定によって構成する必要があります |
| Gitea | 対応 | 非対応 | 対応 | ベータ | |
| OpenStack Keystone | 対応 | 対応 | 非対応 | アルファ |