Virtual DataPort サーバーでの OAuth 認証の設定

REST Web サービスで OAuth 2.0 認証を有効にするには、最初にこのサポートをグローバルレベルで有効にする必要があります。そのためには、[Administration] メニューで [Server configuration] > [Server authentication] をクリックし、次に [OAuth] をクリックします。

Denodo は、アクセストークンを読み取ってそのスコープを取得するために開発されたアプローチのうち、2 つをサポートしています。

  1. JSON Web Token (JWT)

  2. トークンイントロスペクション

組織の ID サーバーがサポートするアプローチを選択する必要があります。

JWT

「JSON Web Token (JWT)」メカニズムを使用するために [Use JWT] を選択し、アプリケーションによって送信されたアクセストークンを読み取れるようにします。

OAuth JWK configuration wizard

OAuth JWK 構成ウィザード

ウィザードで以下の詳細を指定します。

  • Select the signing algorithm: トークンに署名するために発行者によって使用されるアルゴリズム。公開キーは、以下の URL にある JSON Web Key Set (JWKS) を使用して復元されます。

  • Issuer: JWT トークンを発行するエンティティの一意の ID。

  • Audience (オプション): 対象となる Denodo サーバーの ID。クライアントアプリケーションが送信する OAuth アクセストークンに含まれている必要があります。

    アクセストークンにフィールド aud (つまり「audience」) が含まれていない場合、このフィールドは空のままにしておきます。そうしなければ認証は失敗します。

  • JWKS URL: 認証トークンの署名に使用できる公開キーの JSON Web Key Set への URL。これは、OAuth 認証サーバーによって提供されます。

  • Scope field name (デフォルト値は 'scope') (オプション): トークンのスコープを含むパラメーターの名前。デフォルトではこのフィールドの値は「scope」ですが、認証サーバーによって変わる可能性があります。

  • レプリケーション攻撃を防ぐために検証することのできる JWT ID がアクセストークンに含まれている場合は、[Check the JWT Id field] を選択します。

これらの変更を適用するために再起動する必要はありません。

イントロスペクション

「トークンイントロスペクション」メカニズムを使用するには、最初に JSON データソースを作成する必要があります。OAuth 認証を使用する Web サービスがリクエストを受け取ると、このデータソースを使用してリクエストを ID マネージャーに送信し、クライアントから送信された OAuth アクセストークンが有効であるかどうかを検証します。

このメカニズムを定義する基準に従うと、 イントロスペクションエンドポイント に送信されるリクエストは、これらの要件を満たす必要があります。

  • HTTP POST リクエストを使用します。

  • パラメーターは エンコードされた URL でなければなりません。URL は、http://acme-auth-server.denodo.com:8081/c2id/token/introspect?token=@access_token のようになります。

  • アクセストークンの値を含むパラメーターは token です。

  • token_type_hint パラメーターは、送信されたトークンがアクセストークンであることを示すために使用できます (この場合の標準値は 'access_token' です)。

組織の認可サーバーの文書で、要件が異なっていないかどうかを確認します。

JSON configuration wizard

JSON 構成ウィザード

このデータソースを作成したら、Web サービスに対する OAuth 2.0 認証を有効にします。

OAuth introspection configuration wizard

OAuth イントロスペクション構成ウィザード

  • Database: JSON データソースのデータベースを選択します。

  • JSON data source: 作成したデータソースを選択します。

  • Access token interpolated variable: トークンで補完された変数の値を含むフィールド。

    たとえば、次の URL で JSON データソースを作成したとします: http://acme-auth-server.denodo.com:8081/c2id/token/introspect?token=@access_token

    この場合、このフィールドの値は「access_token」でなければなりません。実行時に Denodo サーバーはリクエストからアクセストークンを読み取り、それを補間変数「access_token」に割り当てます。

  • Subject field name (デフォルト値は 'sub') (オプション): トークンの「件名」を含む、トークン内のパラメーターの名前。デフォルトではこのフィールドの値は「sub」ですが、認証サーバーによって異なる場合があります。

  • Scope field name (デフォルト値は 'scope') (オプション): トークンの「スコープ」を含む、トークンのパラメーターの名前。デフォルトでは、このフィールドの値は「scope」ですが、認可サーバーによって異なります。

これらの変更を適用するために再起動する必要はありません。