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 認証 方法をサポートします。以下の手順に従って、資格情報を提供してください。
ユーザー ID とパスワードをコロン (
:) でつないで、ユーザーパスを作成します。Base64 でユーザーパスをエンコードし、US-ASCII の文字列にします。
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 ヘッダーに含める必要があります。
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 プロトコル は、ステートフル認証方法としても使用できます。
認証が必要ないエンドポイントを呼び出します。このリクエストは、初期セッション ID と初期アンチ CSRF トークンを生成します。たとえば、使用可能な Virtual DataPort サーバーに関する情報を返す
/login/configurationエンドポイントを使用できます。curl --location --request GET 'http://localhost:8080/denodo-data-catalog/login/configuration' --header 'Accept: application/json'
応答には、
JSESSIONIDCookie およびX-XSRF-TOKENヘッダーが含まれます。この値を抽出して、次のリクエストに含める必要があります。HTTP/1.1 200 OK ... Set-Cookie: JSESSIONID=1234 X-XSRF-TOKEN: abcd ... { ... <json response> ... }/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'
応答には、新しい
JSESSIONIDCookie および新しいX-XSRF-TOKENヘッダーも含まれます。これらを抽出して、REST API に対する次のリクエストで使用する必要があります。HTTP/1.1 200 OK ... Set-Cookie: JSESSIONID=5678 X-XSRF-TOKEN: efgh ... { ... <json response> ... }これで、
JSESSIONIDCookie と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 を以下のように構成する必要があります。
「 CORS の初期設定 」の手順に従って設定を行います (CORS が有効な状態で Denodo REST Web サービスを公開している場合は、実施済みです)。
Denodo インストール環境で何らかのサーバーを起動する前に、
<DENODO_HOME>/resources/apache-tomcat/conf/context.xmlファイルを開いて、SameSiteCookie のデフォルトポリシーを次の値に変更します。<CookieProcessor sameSiteCookies="none" />
構成ファイル
<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 ヘッダーも使用できます。
