Dex は、OpenID Connect を使用して他のアプリの認証を推進する ID サービスです。
Dex は、「コネクタ」を介して他の ID プロバイダーへのポータルとして機能します。これにより、dex は LDAP サーバー、SAML プロバイダー、または GitHub、Google、Active Directory などの確立された ID プロバイダーに認証を延期できます。クライアントは、dex と通信するための認証ロジックを一度作成すると、dex が特定のバックエンドのプロトコルを処理します。
ID トークンは、OpenID Connect によって導入された OAuth2 拡張機能であり、dex の主要機能です。 ID トークンは、dex によって署名された JSON Web トークン (JWT) であり、エンド ユーザーの ID を証明する OAuth2 応答の一部として返されます。 JWT の例は次のようになります。
eyJhbGciOiJSUzI1NiIsImtpZCI6IjlkNDQ3NDFmNzczYjkzOGNmNjVkZDMyNjY4NWI4NjE4MGMzMjRkOTkifQ.eyJpc3MiOiJodHRwOi8vMTI3LjAuMC4xOjU1NTYvZGV4Iiwic3ViIjoiQ2djeU16UXlOelE1RWdabmFYUm9kV0kiLCJhdWQiOiJleGFtcGxlLWFwcCIsImV4cCI6MTQ5Mjg4MjA0MiwiaWF0IjoxNDkyNzk1NjQyLCJhdF9oYXNoIjoiYmk5NmdPWFpTaHZsV1l0YWw5RXFpdyIsImVtYWlsIjoiZXJpYy5jaGlhbmdAY29yZW9zLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJncm91cHMiOlsiYWRtaW5zIiwiZGV2ZWxvcGVycyJdLCJuYW1lIjoiRXJpYyBDaGlhbmcifQ.OhROPq_0eP-zsQRjg87KZ4wGkjiQGnTi5QuG877AdJDb3R2ZCOk2Vkf5SdP8cPyb3VMqL32G4hLDayniiv8f1_ZXAde0sKrayfQ10XAXFgZl_P1yilkLdknxn6nbhDRVllpWcB12ki9vmAxklAr0B1C4kr5nI3-BZLrFcUR5sQbxwJj4oW1OuG6jJCNGHXGNTBTNEaM28eD-9nhfBeuBTzzO7BKwPsojjj4C9ogU4JQhGvm_l4yfVi0boSx8c0FX3JsiB0yLa1ZdJVWVl9m90XmbWRSD85pNDQHcWZP9hR6CMgbvGkZsgjG32qeRwUL_eNkNowSBNWLrGNPoON1gMg
ID トークンには、どのクライアント アプリがユーザーをログインさせたか、トークンの有効期限が切れるとき、およびユーザーの 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 は、カスタム リソース定義を使用して Kubernetes クラスター上でネイティブに実行され、OpenID Connect プラグインを通じて API サーバー認証を駆動できます。 kubernetes-dashboard
やkubectl
などのクライアントは、dex がサポートする任意の ID プロバイダーを通じてクラスターにログインできるユーザーの代わりに動作できます。
ユーザーが dex 経由でログインすると、ユーザーの ID は通常、別のユーザー管理システム (LDAP ディレクトリ、GitHub 組織など) に保存されます。Dex は、クライアント アプリと上流の ID プロバイダーの間の shim として機能します。クライアントは、dex にクエリを実行するために OpenID Connect を理解するだけで済みますが、dex は他のユーザー管理システムにクエリを実行するための一連のプロトコルを実装しています。
「コネクタ」は、別の ID プロバイダーに対してユーザーを認証するために dex によって使用される戦略です。 Dex は、GitHub、LinkedIn、Microsoft などの特定のプラットフォームと、LDAP や SAML などの確立されたプロトコルをターゲットとするコネクタを実装します。
コネクタによっては、プロトコルの制限により、dex がリフレッシュ トークンを発行したり、グループ メンバーシップ要求を返したりできない場合があります。たとえば、SAML はアサーションを更新する非対話型の方法を提供していないため、ユーザーが SAML コネクタ dex 経由でログインした場合、クライアントに更新トークンは発行されません。更新トークンのサポートは、 kubectl
などのオフライン アクセスを必要とするクライアントに必要です。
Dex は次のコネクタを実装します。
名前 | リフレッシュトークンをサポートします | 団体の主張を支持する | preferred_username クレームをサポートします | 状態 | メモ |
---|---|---|---|---|---|
LDAP | はい | はい | はい | 安定した | |
GitHub | はい | はい | はい | 安定した | |
SAML 2.0 | いいえ | はい | いいえ | 安定した | 警告: メンテナンスされておらず、認証バイパスに対して脆弱である可能性があります (#1884) |
GitLab | はい | はい | はい | ベータ | |
OpenID コネクト | はい | はい | はい | ベータ | Salesforce、Azureなどが含まれます。 |
OAuth 2.0 | いいえ | はい | はい | アルファ | |
グーグル | はい | はい | はい | アルファ | |
リンクトイン | はい | いいえ | いいえ | ベータ | |
マイクロソフト | はい | はい | いいえ | ベータ | |
認証プロキシ | いいえ | はい | いいえ | アルファ | Apache2 mod_auth などの認証プロキシ |
Bitbucket クラウド | はい | はい | いいえ | アルファ | |
オープンシフト | はい | はい | いいえ | アルファ | |
アトラシアンの群衆 | はい | はい | はい * | ベータ | preferred_username クレームは config を通じて構成する必要があります |
ギテア | はい | いいえ | はい | ベータ | |
OpenStack キーストーン | はい | はい | いいえ | アルファ |
安定版、ベータ版、アルファ版は次のように定義されます。
コネクタ機能のすべての変更または非推奨は、リリース ノートで発表されます。
脆弱性の報告の詳細については、セキュリティ ポリシーをご覧ください。
すべてのコーディングとテストが完了したら、テスト スイートを実行してください。
make testall
最高の開発者エクスペリエンスを得るには、Nix と direnv をインストールしてください。
あるいは、Go と Docker を手動でインストールするか、パッケージ マネージャーを使用してインストールします。 make deps
実行して、残りの依存関係をインストールします。
リリースプロセスについては、リリースドキュメントをお読みください。
このプロジェクトは、Apache License バージョン 2.0 に基づいてライセンス供与されています。