はじめに
コミット
17a54e9のリポジトリに基づく。コマンドは Go 1.25 を入れた Unix シェルを想定。
前提
- Go 1.25 以上。コンテナイメージを使うなら Docker。
- 動作確認用の下流 OIDC クライアント。リポジトリにはソースからビルドできる
example-appが同梱されている。
インストール
リポジトリから dex バイナリをビルドする。
git clone https://github.com/dexidp/dex.git
cd dex
make build
# ./bin/dex が生成されるコンテナイメージも公開されているので、docker pull ghcr.io/dexidp/dex がビルドの代替になる。
最初の動く構成
最短で動くプロバイダは SQLite ストレージと mock コネクタを使うので、上流 ID プロバイダは不要だ。リポジトリの config.dev.yaml がまさにこれ。
ステップ 1: Dex にサンプル設定を指す。 これは issuer、SQLite ストレージ、1 つの静的クライアント(example-app)、そして上流に一切接触せず定型ユーザをログインさせる mockCallback コネクタを宣言する。
issuer: http://127.0.0.1:5556/dex
storage:
type: sqlite3
config:
file: var/sqlite/dex.db
web:
http: 127.0.0.1:5556
staticClients:
- id: example-app
redirectURIs:
- 'http://127.0.0.1:5555/callback'
name: 'Example App'
secret: ZXhhbXBsZS1hcHAtc2VjcmV0
connectors:
- type: mockCallback
id: mock
name: Exampleステップ 2: server を起動する。
./bin/dex serve config.dev.yamlステップ 3: 別ターミナルで example クライアントをビルドして実行し、ブラウザで開いてフルのログインを走らせる。
make examples
./bin/example-app
# http://127.0.0.1:5555 を開くログインを押すと Dex にリダイレクトされ、mock コネクタがログインさせ、example アプリが発行された ID Token を受け取って表示する。
動作確認
Discovery ドキュメントを取得してプロバイダが上がっているか確かめる。issuer とエンドポイントを記した JSON が返るはず。
curl http://127.0.0.1:5556/dex/.well-known/openid-configuration正常な Dex は公開署名鍵も /dex/keys で配信する。下流クライアントはこれで ID Token の署名を検証する。
次に読むもの
mock コネクタを実物(LDAP・SAML・GitHub・Google、または汎用 OIDC)に置き換え、テスト以上の用途ではストレージを Postgres・etcd・Kubernetes CRD に切り替える。HA・鍵ローテーション・コネクタ設定などの本番運用は、ここで再導出せず公式ドキュメントに従うこと。