USER MANUALS

REST API

更新プログラム 8.0u20210715 以降、Data Catalog は、このマニュアルで説明するすべてのタスクをプログラムで実行するための REST API を備えています。

この REST API のドキュメントは、http://<host>:<port>/denodo-data-catalog/swagger-ui/index.html で入手できます。

注釈

以前のバージョンの Data Catalog (7.0、8.0GA、8.0u20210209) は以下のタスクを実行するための REST API を備えています。

  • Virtual DataPort との同期

  • 使用状況統計の計算

  • メタデータのエクスポート

  • メタデータのインポート

  • Ping

このレガシー REST API は、 legacy- で始まるエントリに記載されています。下位互換性のために保持されているだけで、非推奨であることに注意してください。現在の Data Catalog 8.0 の REST API への移行をご検討ください。

REST API のエンドポイントの大半は認証が必要なため、それらにアクセスする前に資格情報を提供する必要があります。

REST API は以下の認証方法をサポートします。

  • HTTP Basic 認証 (ステートレス)

  • OAuth トークン (ステートレス)

  • OAuth トークン (ステートフル)

ステートレス認証方法では、リクエストのたびに資格情報を提供する必要があります。資格情報として、ユーザー名とパスワードまたは OAuth トークンを使用できます。

ステートフル認証方法では、資格情報を一度だけ提供する必要があります。この場合、サーバーがセッション Cookie およびアンチ CSRF トークンを生成します。これらは、認証済みの REST API エンドポイントにアクセスするために、次の HTTP リクエストで送信する必要があります。

Data Catalog に複数の Virtual DataPort サーバーを登録している場合、接続するサーバーを指定する必要があります。これには、クエリパラメータ serverId を使用し、サーバーの内部 ID を値として指定します。

注釈

次の REST API のエンドポイントから、Data Catalog に登録された Virtual DataPort サーバーの内部 ID を取得できます。 /public/api/configuration/servers

HTTP Basic 認証 (ステートレス)

REST API は HTTP Basic 認証 方法をサポートします。以下の手順に従って、資格情報を提供してください。

  1. ユーザー ID とパスワードをコロン (:) でつないで、ユーザーパスを作成します。

  2. Base64 でユーザーパスをエンコードし、US-ASCII の文字列にします。

  3. Authorization という名称のヘッダーを作成し、値に Basic <BASE64-user-pass> を指定します。

次の例は Data Catalog の新しいホームページから情報を取得する例で、ユーザー名 admin とパスワード admin を使用して認証を行っています。

curl --location --request GET 'http://localhost:9090/denodo-data-catalog/public/api/home' --header 'Authorization: Basic YWRtaW46YWRtaW4='

OAuth トークン (ステートレス)

OAuth 2.0 プロトコル はオープン標準のプロトコルであり、これを使用することで、クライアントアプリケーションがユーザーアカウントのパスワードを送信することなく、Denodo にアクセスできるようになります。

OAuth 2.0 を使用して Data Catalog REST API にアクセスする前に、 Virtual DataPort で OAuth を有効にする 必要があります。

その後、認証が必要な各 HTTP リクエストにアクセストークンを含める必要があります。このトークンは、 Authorization ヘッダーに含める必要があります。

Bearer OAuth トークンを含む認可ヘッダー
Authorization: Bearer oauth_token

以下の例は、ステートレス OAuth トークン認証を使用して、IDが「1」のサーバーの admin データベースの情報を取得します。

curl --location --request GET 'http://localhost:8080/denodo-data-catalog/public/api/browse/databases?databaseName=admin&serverId=1' --header 'Authorization: Bearer oauth_token' --header 'Accept: application/json'

注釈

この認証方法は、デフォルトで無効になっています。有効にするには、Data Catalog の構成ファイル <DENODO_HOME>/conf/data-catalog/DataCatalogBackend.properties でパラメータ oauth.statelessEnabled=true を設定します。

OAuth トークン (ステートフル)

OAuth 2.0 プロトコル は、ステートフル認証方法としても使用できます。

  1. Virtual DataPort で OAuth を有効にします

  2. 認証が必要ないエンドポイントを呼び出します。このリクエストは、初期セッション ID と初期アンチ CSRF トークンを生成します。たとえば、使用可能な Virtual DataPort サーバーに関する情報を返す /login/configuration エンドポイントを使用できます。

    curl --location --request GET 'http://localhost:8080/denodo-data-catalog/login/configuration' --header 'Accept: application/json'
    

    応答には、 JSESSIONID Cookie および X-XSRF-TOKEN ヘッダーが含まれます。この値を抽出して、次のリクエストに含める必要があります。

    HTTP/1.1 200 OK
    ...
    Set-Cookie: JSESSIONID=1234
    X-XSRF-TOKEN: abcd
    ...
    
    { ... <json response> ... }
    
  3. /accesstoken 認証エンドポイントを呼び出します。このリクエストは、OAuth アクセストークンを含んでいる必要があります。さらに、このリクエストは、セッション ID を含む Cookie およびアンチ CSRF トークンも含んでいる必要があります。これらはどちらも前の手順で生成されたものです。

    curl --location --request GET 'http://localhost:8080/denodo-data-catalog/accesstoken?serverId=1' --header 'Accept: application/json' --header 'Authorization: Bearer oauth_token' --header 'Cookie: JSESSIONID=1234' --header 'X-XSRF-TOKEN: abcd'
    

    応答には、新しい JSESSIONID Cookie および新しい X-XSRF-TOKEN ヘッダーも含まれます。これらを抽出して、REST API に対する次のリクエストで使用する必要があります。

    HTTP/1.1 200 OK
    ...
    Set-Cookie: JSESSIONID=5678
    X-XSRF-TOKEN: efgh
    ...
    
    { ... <json response> ... }
    
  4. これで、 JSESSIONID Cookie と X-XSRF-TOKEN ヘッダーを使用して REST API エンドポイントを呼び出すことができます。これらはどちらも /accesstoken 応答で生成されたものです。以下の例は、IDが「1」のサーバーの admin データベースの情報を取得します。

    curl --location --request GET 'http://localhost:8080/denodo-data-catalog/public/api/browse/databases?databaseName=admin&serverId=1' --header 'Cookie: JSESSIONID=5678' --header 'X-XSRF-TOKEN: efgh' --header 'Accept: application/json'
    

注釈

この認証方法は、デフォルトで無効になっています。有効にするには、Data Catalog の構成ファイル <DENODO_HOME>/conf/data-catalog/DataCatalogBackend.properties でパラメータ oauth.statefulEnabled=true を設定します。

CORS の構成

クロスサイト環境から Data Catalog の REST API にアクセスするには、Denodo Platform を以下のように構成する必要があります。

  1. CORS の初期設定 」の手順に従って設定を行います (CORS が有効な状態で Denodo REST Web サービスを公開している場合は、実施済みです)。

  2. Denodo インストール環境で何らかのサーバーを起動する前に、 <DENODO_HOME>/resources/apache-tomcat/conf/context.xml ファイルを開いて、 SameSite Cookie のデフォルトポリシーを次の値に変更します。

    <CookieProcessor sameSiteCookies="none" />
    
  3. 構成ファイル <DENODO_HOME>/conf/data-catalog/DataCatalogBackend.properties でプロパティ cors.enabled を追加または編集して true に設定します。CORS を無効にするには、このプロパティを削除するか、 false に設定します。このファイルでは、CORS 構成を微調整するために、以下のオプションのプロパティを設定することもできます。

    • cors.allowedOrigins: オリジン間リクエストの実行を許可するオリジンのリストを設定します (各オリジンをスペースで区切ります)。たとえば、 cors.allowedOrigins=http://localhost:3000 https://localhost:3000 のようになります。デフォルトでは、プロパティ cors.allowedOrigins の値は * です。つまり、どのドメインでもオリジン間リクエストを実行できます。

    • cors.allowCredentials: true に設定すると、リクエストの資格証明モードが include のときに、クライアントはフロントエンドの JavaScript に応答の資格証明を公開します。デフォルトでは、プロパティ cors.allowCredentials の値は true です。

    • cors.allowedHeaders: オリジン間リクエストで使用できる HTTP ヘッダーのリストを設定します (各 HTTP ヘッダーをスペースで区切ります)。たとえば、 cors.allowedHeaders=content-type uri x-xsrf-token のようになります。デフォルトでは、プロパティ cors.allowedHeaders の値は * です。つまり、オリジン間リクエストでは、どのような HTTP ヘッダーも使用できます。

    • cors.allowedMethods: オリジン間リクエストで許可される HTTP メソッドのリストを設定します (各 HTTP メソッドをスペースで区切ります)。たとえば、 cors.allowedMethods=GET POST PUT DELETE のようになります。デフォルトでは、プロパティ cors.allowedMethods の値は * です。つまり、オリジン間リクエストでは、どのような HTTP ヘッダーも使用できます。

Add feedback