ngx_http_auth_jwt_module モジュール
設定例 ディレクティブ auth_jwt auth_jwt_claim_set auth_jwt_header_set auth_jwt_key_file auth_jwt_key_request auth_jwt_leeway Embedded Variables |
ngx_http_auth_jwt_module
モジュール (1.11.3) は指定されたキーを使って提供された JSON Web トークン (JWT) を検証することでクライアント認証を実装します。 JWT の要求は JSON Web Signature (JWS) 構造の中で符号化されていなければなりません。モジュールはOpenID Connect 認証のために使うことができます。
モジュールは、satisfyディレクティブによってngx_http_access_module、ngx_http_auth_basic_module および ngx_http_auth_request_moduleのような他のアクセスモジュールと組み合わされるかも知れません。
モジュールは以下の暗号 アルゴリズムをサポートします:
- HS256, HS384, HS512
- RS256, RS384, RS512
- ES256, ES384, ES512
- EdDSA (Ed25519 and Ed448 signatures) (1.15.7)
バージョン 1.13.7より前は、HS256, RS256, ES256 アルゴリズムだけがサポートされました。
このモジュールは商用許可の一部として利用可能です。
設定例
location / { auth_jwt "closed site"; auth_jwt_key_file conf/keys.json; }
ディレクティブ
構文: |
auth_jwt
|
---|---|
デフォルト: |
auth_jwt off; |
コンテキスト: |
http , server , location , limit_except |
JSON Webトークンの検証を有効にします。指定された文字列
はrealm
として使われます。パラメータの値には変数に含めることができます。
任意のtoken
パラメータはJSON Webトークンを含む変数を指定します。デフォルトでは、JWTはBearer トークンとして "Authorization" の中に渡されます。JWT はクッキーまたはクエリ文字列の一部としても渡されるかも知れません:
auth_jwt "closed site" token=$cookie_auth_token;
特別な値 off
は上の設定レベルから受け継いだauth_jwt
ディレクティブの影響をキャンセルします。
構文: |
auth_jwt_claim_set |
---|---|
デフォルト: | - |
コンテキスト: |
http |
このディレクティブはバージョン1.11.10から導入されました。
変数
をキー名で識別されるJWT claim パラメータに設定します。名前の一致はJSON木のトップレベルから開始します。配列については、変数はカンマで区切られる配列の要素のリストを維持します。
auth_jwt_claim_set $email info e-mail; auth_jwt_claim_set $job info "job title";
バージョン 1.13.7より前は1つののキー名だけが指定することができ、結果は配列には定義されませんでした。
構文: |
auth_jwt_header_set |
---|---|
デフォルト: | - |
コンテキスト: |
http |
このディレクティブはバージョン1.11.10から導入されました。
変数
をキー名で識別されるJOSEヘッダパラメータに設定します。名前の一致はJSON木のトップレベルから開始します。配列については、変数はカンマで区切られる配列の要素のリストを維持します。
バージョン 1.13.7より前は1つののキー名だけが指定することができ、結果は配列には定義されませんでした。
構文: |
auth_jwt_key_file |
---|---|
デフォルト: | - |
コンテキスト: |
http , server , location , limit_except |
JWT署名を検証するためにJSON Web Key Setの中の file
を指定します。パラメータの値には変数に含めることができます。
構文: |
auth_jwt_key_request |
---|---|
デフォルト: | - |
コンテキスト: |
http , server , location , limit_except |
このディレクティブはバージョン1.15.6から導入されました。
JWT署名を検証するためにサブリクエストからJSON Web Key Setファイルを取得できるようにし、サブリクエストの送信先のURIをせっていします。検証のオーバーヘッドを回避するには、キーファイルをキャッシュすることをお勧めします:
proxy_cache_path /data/nginx/cache levels=1 keys_zone=foo:10m; server { ... location / { auth_jwt "closed site"; auth_jwt_key_request /jwks_uri; } location = /jwks_uri { internal; proxy_cache foo; proxy_pass http://idp.example.com/keys; } }
構文: |
auth_jwt_leeway |
---|---|
デフォルト: |
auth_jwt_leeway 0s; |
コンテキスト: |
http , server , location |
このディレクティブはbーアジョン1.13.10で導入されました。
expおよびnbf JWT クレームを検証する時に、クロックのスキューを補償する最大許容余地を設定します。
埋め込み変数
ngx_http_auth_jwt_module
モジュールは埋め込みの変数をサポートします:
$jwt_header_
name
- 指定されたJOSE ヘッダの値を返します。
$jwt_claim_
name
-
指定されたJWT claimの値を返します。
入れ子になったクレームおよびドット(“.”)を含むクレームの場合、変数の値は評価できません: 代わりにauth_jwt_claim_setディレクティブを使う必要があります。