メインコンテンツへスキップ
この認証方式は最も安全と考えられます。認証リクエストをユーザーに直接送るのではなく、アプリケーションが Vantage の認可サーバーに送信するためです。認可サーバーがユーザーを認証し、クライアントに認可コードを返します。 認可コードの傍受を防ぐために、この認証シナリオでは PKCE(Proof Key for Code Exchange)というセキュリティ拡張を使用します。動作は次のとおりです。各認可リクエストで暗号学的に安全な乱数を生成して code_verifier に保存し、それを用いて code_challenge に格納する暗号学的に導出された値を生成します。続いてこの値を認可サーバーへ送信し、認可コードを取得します。 PKCE の詳細については こちらをご覧ください。

認可コードの取得

認証プロセスを開始するには、以下のパラメーターを渡して authorize エンドポイントにユーザーをリダイレクトします。
Parameter説明
client_idアプリケーション識別子。Vantage API Client(client_idclient_secret)の作成方法については、「Managing Tenant Vantage API Clients」を参照してください。
redirect_uriアクセス権限が付与された後にブラウザーをリダイレクトするために使用される、アプリケーションまたはウェブサイトの URL。
response_type=code認可コードのレスポンスタイプを使用することを指定します。
scope=openid permissions global.wildcard付与する権限スコープを指定します。
stateレスポンスで認可結果を受け取るための任意の string 値。
code_challengecode_verifier のデジタル署名値(code_challenge_method を使用)。
code_challenge_methodcode_verifier のデジタル署名方式(S256)。
productId=a8548c9b-cb90-4c66-8567-d7372bb9b963Vantage の識別子。
response_type、scope、productId の値は上記のとおり正確に指定する必要があります。response_type を除くこれらのキーは変更される可能性があります。設定で管理することを検討してください。
サンプルリクエスト
https://vantage-us.abbyy.com/auth2/connect/authorize?client_id=client_id&redirect_uri=https%3A%2F%2Fvantage-us.abbyy.com%2Flogin-callback&response_type=code&scope=openid%20permissions%20global.wildcard&state=ef30939211cc4ecb9a7a349b855c6a10&code_challenge=tA6ayQ5VUjLX2tufAKaHh-9bTAQ4hQQY5VZAoB2kG9o&code_challenge_method=S256&productId=a8548c9b-cb90-4c66-8567-d7372bb9b963
resource の識別子を含む redirect_uri というパラメーターは、OAuth 2.0 で使用され、Vantage が認可コードをあなたの resource に送信し、その後そのコードをアクセストークンと交換できるようにします。アクセストークンは、以降のすべての API 呼び出しでの認証に必要です。この認証方法を使用するには、redirect_uri パラメーターの値を ABBYY のテクニカルサポートに提供し、管理者によるホワイトリスト登録を受ける必要があります。 scope パラメーターで要求したアクセス権限が付与されていることが検証されると、ブラウザーは Vantage サーバーが用意した専用のウェブページにリダイレクトされます。このウェブページには、あなたのアカウントで認可を行うためのダイアログウィンドウが表示されます。このページは、ページの URL と接続の SSL 証明書の状態を確認できるよう、アドレスバーが表示されるブラウザーで開く必要があります。 あなたのメールアドレスが異なるテナント内の複数のアカウントに関連付けられている場合、メールアドレスを入力した後に、テナントの選択とパスワードの入力を求められます。次のいずれかのリソースを使用して、テナント識別子(tokenId パラメーター)を直接渡すこともできます。
https://vantage-us.abbyy.com/auth2/{tenantId}/connect/authorize?client_id=client_id&redirect_uri=external_app_redirect_uri&response_type=code
&scope=openid%20permissions%20global.wildcard&state=state&code_challenge=code_challenge
&code_challenge_method=S256&productId=a8548c9b-cb90-4c66-8567-d7372bb9b963
または
https://vantage-us.abbyy.com/auth2/connect/authorize?client_id=client_id&redirect_uri=external_app_redirect_uri&response_type=code
&scope=openid%20permissions%20global.wildcard&state=state&code_challenge=code_challenge
&code_challenge_method=S256&productId=a8548c9b-cb90-4c66-8567-d7372bb9b963&tenantId=tenantId
テナントアカウントのパスワードを入力する必要があります。認証情報を入力すると、認可はサーバー側で完了し、アプリケーションに Vantage API へのアクセスが付与され、要求への応答で認可コードが返されます。 この認証タイプをサイトまたはアプリケーションが使用している場合、許可済みリダイレクトurlの一覧に追加するそのサイトまたはアプリに対し、Vantageユーザーは自分に代わってVantage APIへのアクセス権を付与することになりますのでご注意ください。サイトまたはアプリにアクセス権を付与するため、ユーザーは自分のログイン名とパスワードでVantageにサインインして認証するよう求められます。ユーザーが認証されると、サイトまたはアプリには次の権限が付与されます。
  • ユーザーに代わってVantageテナント内のデータ カタログを管理する
  • ユーザーに代わってVantageテナント内のSkillにアクセスする
  • ユーザーに代わってVantageのトランザクションを作成・参照する
サイトまたはアプリは、ユーザーのパスワードを変更したり、Vantageテナント内のユーザー一覧を変更したり、Skillを編集したりすることはできません。提供されるのはVantage APIへのアクセスのみです。いったんアクセスが付与されると、ユーザーはそれを取り消すことはできません。

認可トークンの取得

認可コードを取得したら、1分以内にアクセストークンへ交換します。application/x-www-form-urlencoded データを使用して、トークンエンドポイントに POST リクエストを送信します。 リクエスト本文のパラメーター:
Parameter説明
code_verifier生成したコード。認可リクエストの開始を確認するために必要です。
client_idアプリケーションの識別子。
client_secretアプリケーションのセキュアキー。
codeサーバーから取得した認可コード。
redirect_uri認可ステップで使用したリダイレクト URL。
grant_type=authorization_code認可コードのグラントタイプを使用することを指定します。
scope=openid permissions global.wildcard offline_access権限スコープを指定します。リフレッシュトークンを取得するには、スコープに offline_access を追加します。
サンプルリクエスト(Windows):
curl --location --request POST "https://vantage-eu.abbyy.com/auth2/connect/token" \
  --data-urlencode "code_verifier=code_verifier" \
  --data-urlencode "client_id=client_id" \
  --data-urlencode "client_secret=client_secret" \
  --data-urlencode "code=authorization code" \
  --data-urlencode "redirect_uri=external app redirect uri" \
  --data-urlencode "grant_type=authorization_code"
他の地域でも利用可能です:
# 北米
curl --location --request POST "https://vantage-us.abbyy.com/auth2/connect/token" \
  --data-urlencode "code_verifier=code_verifier" \
  --data-urlencode "client_id=client_id" \
  --data-urlencode "client_secret=client_secret" \
  --data-urlencode "code=authorization code" \
  --data-urlencode "redirect_uri=external app redirect uri" \
  --data-urlencode "grant_type=authorization_code"

# オーストラリア
curl --location --request POST "https://vantage-au.abbyy.com/auth2/connect/token" \
  --data-urlencode "code_verifier=code_verifier" \
  --data-urlencode "client_id=client_id" \
  --data-urlencode "client_secret=client_secret" \
  --data-urlencode "code=authorization code" \
  --data-urlencode "redirect_uri=external app redirect uri" \
  --data-urlencode "grant_type=authorization_code"
サンプルリクエスト(Linux):
curl --location --request POST 'https://vantage-eu.abbyy.com/auth2/connect/token' \
  --data-urlencode 'code_verifier=code_verifier' \
  --data-urlencode 'client_id=client_id' \
  --data-urlencode 'client_secret=client_secret' \
  --data-urlencode 'code=authorization code' \
  --data-urlencode 'redirect_uri=external app redirect uri' \
  --data-urlencode 'grant_type=authorization_code'
他のリージョンでもご利用いただけます:
# 北米
curl --location --request POST 'https://vantage-us.abbyy.com/auth2/connect/token' \
  --data-urlencode 'code_verifier=code_verifier' \
  --data-urlencode 'client_id=client_id' \
  --data-urlencode 'client_secret=client_secret' \
  --data-urlencode 'code=authorization code' \
  --data-urlencode 'redirect_uri=external app redirect uri' \
  --data-urlencode 'grant_type=authorization_code'

# オーストラリア
curl --location --request POST 'https://vantage-au.abbyy.com/auth2/connect/token' \
  --data-urlencode 'code_verifier=code_verifier' \
  --data-urlencode 'client_id=client_id' \
  --data-urlencode 'client_secret=client_secret' \
  --data-urlencode 'code=authorization code' \
  --data-urlencode 'redirect_uri=external app redirect uri' \
  --data-urlencode 'grant_type=authorization_code'
サーバーからの応答にはアクセス トークンが含まれます。
{
  "id_token": "<redacted>",
  "access_token": "<redacted>",
  "expires_in": 86400,
  "token_type": "Bearer",
  "refresh_token": "<redacted>",
  "scope": "openid permissions global.wildcard offline_access legacy.client"
}
Authorization Code フローの詳細は、こちらをご覧ください。 各フローごとに、access_token キーにはトークンが格納され、expires_in キーにはトークンの有効期限までの秒数が指定されます。既定では、アクセストークンの有効期間は 24 時間です(詳細は Token lifetimes を参照)。すべてのリクエストに次の認可ヘッダーを追加し、token を受け取った値に置き換えてください。
-H "Authorization: Bearer token"
同一アカウントで複数のトークンを取得できます。認可トークンの詳細については、こちらをご参照ください。

リフレッシュトークンの取得

Vantage API クライアントの設定時に Allow issuing refresh tokens to refresh access tokens オプションが有効で、アクセス トークン取得リクエストに scope=openid permissions global.wildcard offline_access パラメーターが含まれている場合、レスポンスに追加のリフレッシュトークンが返されます。リフレッシュトークンを取得したら、以下のパラメーターを指定してトークンエンドポイントに POST リクエストを送信することで、アクセス トークンを更新できます。
Parameter説明
client_idアプリケーションの識別子。
client_secretセキュアなアプリケーションキー。
refresh_tokenサーバーから取得したリフレッシュトークン。
grant_type=refresh_tokenリフレッシュトークンのグラントタイプを使用することを指定します。
サンプルリクエスト(Windows):
curl --location --request POST "https://vantage-eu.abbyy.com/auth2/connect/token" \
  --data-urlencode "client_id=client_id" \
  --data-urlencode "client_secret=client_secret" \
  --data-urlencode "refresh_token=refresh_token" \
  --data-urlencode "grant_type=refresh_token"
他のリージョンや Linux でも、同等のコマンドで利用できます。

トークンの有効期間

Access トークンおよび Refresh トークンには、以下の有効期間が設定されています。
  • Access トークンの有効期間: 24時間。発行された Access トークンが有効な期間です。
  • Refresh トークンの有効期間: 30日。初回認証時に最初の Access トークンと併せて Refresh トークンが発行されます。Refresh トークンが有効な間は、新しい Access トークンの発行に使用できます。Refresh トークンは延長できません。再認証によってのみ新しいトークンを取得できます。