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_modulengx_http_auth_basic_module および ngx_http_auth_request_moduleのような他のアクセスモジュールと組み合わされるかも知れません。

モジュールは以下の暗号 アルゴリズムをサポートします:

バージョン 1.13.7より前は、HS256, RS256, ES256 アルゴリズムだけがサポートされました。

このモジュールは商用許可の一部として利用可能です。

設定例

location / {
    auth_jwt          "closed site";
    auth_jwt_key_file conf/keys.json;
}

ディレクティブ

構文: auth_jwt string [token=$variable] | off;
デフォルト:
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 $variable name ...;
デフォルト: -
コンテキスト: 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 $variable name ...;
デフォルト: -
コンテキスト: http

このディレクティブはバージョン1.11.10から導入されました。

変数 をキー名で識別されるJOSEヘッダパラメータに設定します。名前の一致はJSON木のトップレベルから開始します。配列については、変数はカンマで区切られる配列の要素のリストを維持します。

バージョン 1.13.7より前は1つののキー名だけが指定することができ、結果は配列には定義されませんでした。

構文: auth_jwt_key_file file;
デフォルト: -
コンテキスト: http, server, location, limit_except

JWT署名を検証するためにJSON Web Key Setの中の fileを指定します。パラメータの値には変数に含めることができます。

構文: auth_jwt_key_request uri;
デフォルト: -
コンテキスト: 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 time;
デフォルト:
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ディレクティブを使う必要があります。

TOP
inserted by FC2 system