(近日公開) Tableau Cloud 管理者は、外部認証サーバー (EAS) を登録し、OAuth 2.0 標準プロトコルを使用して Tableau Cloud サイトと EAS の間に信頼関係を確立できます。信頼関係を確立することにより、次のことができるようになります。

  • Tableau Cloud サイト用に構成されている ID プロバイダー (IdP) を介して、カスタム アプリケーションに埋め込まれた Tableau コンテンツへのシングル サインオン (SSO) エクスペリエンスをユーザーに提供する
  • JSON Web Token (JWT) を使用して、ユーザーに代わって Tableau REST API へのアクセスをプログラムで承認する

埋め込まれた Tableau コンテンツがカスタム アプリケーションに読み込まれるときは、標準の OAuth フローが使用されます。ユーザーは IdP に正常にサインインした後、Tableau Cloud に自動的にサインインします。以下に説明する手順に従って、EAS を Tableau Cloud サイトに登録します。

重要: このトピックの一部の手順では、サードパーティのソフトウェアとサービスを使用して構成する必要があります。Tableau Server で EAS 機能を有効にする手順については最善を尽くして検証していますが、サードパーティのソフトウェアとサービスが変更されたり、ユーザーの組織の方針が異なる場合があります。問題が発生した場合、信頼性の高い構成の詳細情報とサポートについては、サードパーティーのドキュメントを参照してください。

注: EC2 インスタンスなどのコンテナで接続済みアプリを実行している場合、セッション トークンを有効にするには、コンテナとホストの両方の時計が UTC に設定されている必要があります。いずれかの時計が異なる規格を使用している場合、接続済みアプリは信頼されません。

ステップ 1: 始める前に

EAS を自分のTableau Cloudサイトに登録するには、EAS がすでに構成されている必要があります。さらに、EAS は、以下の表にリストされている登録済みのクレームとヘッダーを含む有効な JSON Web Token (JWT) を送信する必要があります。

クレーム 説明または必要な値
"kid" (キー ID) 必須 (ヘッダー内)アイデンティティ プロバイダーからの一意のキー識別子
"iss" (発行元) 必須 (ヘッダー内またはクレームとして)信頼できる接続済みアプリとその署名キーを識別する一意の発行者 URI
"alg" (アルゴリズム) 必須 (ヘッダー内)JWT 署名アルゴリズム。サポートしているアルゴリズム名の一覧は、javadoc.io ドキュメントの「Class JWSAlgorithm」(新しいウィンドウでリンクが開く)ページにあります。
"sub" (サブジェクト) 認証された Tableau Cloud ユーザーのユーザー名 (メール アドレス)
"aud" (オーディエンス) 値は "tableau" である必要があります。
"exp" (有効期限)

有効な JWT の有効期限が切れてはなりません。JWT の有効期限 (UTC) は、最大有効期間 (10分) 内である必要があります。

"jti" (JWT ID) JWT ID クレームは、JWT に一意の識別子を提供し、大文字と小文字を区別します。
"scp" (範囲)

埋め込みのワークフローの場合、サポートされている値は次のとおりです。

"tableau:views:embed"
"tableau:views:embed_authoring"
"tableau:metrics:embed"

注:

  • 値はリスト型として渡す必要があります。
  • tableau:views:embed の場合、この範囲は、Tableau Cloud で既に構成されているユーザーのパーミッションを考慮し、元のビューで使用可能な場合は、ユーザーが埋め込みビューのツールを操作できるようにします。
  • 埋め込みコードではツールバー パラメーターを除外することをお勧めします。詳細については、以下の既知の問題 (埋め込みのワークフローのみ)を参照してください。

REST API 承認ワークフローの場合は、「JWT 認可をサポートする REST API メソッド」を参照してください。

注: 上記の JWT クレームは、インターネット技術標準化委員会 (IETF) によって配布されたドキュメントの「Registered Claim Names」(新しいウィンドウでリンクが開く)セクションに文書化されています。

ステップ 2: EAS を Tableau Cloud に登録する

EAS を Tableau Cloud に登録することにより、EAS と自分のTableau Cloudサイトの間に信頼関係を確立します。これは、ユーザーがカスタム アプリケーションに埋め込まれた Tableau コンテンツにアクセスすると、IdP で認証するようにリダイレクトされることを意味します。EAS は認証トークンを生成して、検証のために Tableau Server に渡します。信頼関係が検証されると、埋め込まれたコンテンツへのアクセスがユーザーに許可されます。

注: 一部の EAS では、アプリケーションが Tableau コンテンツにアクセスするためにユーザーの承認を求める同意ダイアログを表示するオプションがサポートされています。ユーザーに最高のエクスペリエンスを提供するには、ユーザーに代わってカスタム アプリケーションの要求に自動的に同意するように EAS を構成することをお勧めします。

  1. サイト管理者として、Tableau Cloud にサインインします。

  2. 左側のペインから、[設定] > [接続済みアプリ] の順に選択します。

  3. [New Connected App (新しい接続済みアプリ)] ボタンのドロップダウン矢印をクリックして、[OAuth 2.0 Trust (OAuth 2.0 信頼)] を選択します。

  4. [Create Connected App (接続済みアプリの作成)] ダイアログ ボックスで、次いずれかの手順を実行します。
    1. [Connected app name (接続済みアプリ名)] テキスト ボックスに、接続済みアプリ名を入力します。

    2. [Issuer URL (発行元 URL)] テキスト ボックスに、EAS の発行元 URL を貼り付けます。

    3. [Enable connected app by default (既定で接続済みアプリを有効にする)] を選択します。セキュリティ上の理由から、接続済みアプリは作成時に既定で無効に設定されています。

    4. 完了したら、[作成] ボタンをクリックします。

  5. 接続済みアプリ ID (クライアント ID とも呼ばれます) をメモして、以下のステップ 3 で使用します。

ステップ 3: 次のステップ

埋め込みのワークフローの場合

EAS を使用するように自分のTableau Cloudサイトを構成した後、カスタム アプリケーションに埋め込みコードを追加する必要があります。手順 1 で説明したように、EAS によって生成された有効な JWT が、カスタム アプリケーションが呼び出す Web コンポーネントに含まれていることを確認してください。

Tableau コンテンツの埋め込みの詳細については、次のいずれかまたは両方を参照してください。

注: 埋め込みコンテンツにアクセスするユーザーを正常に認証するには、ブラウザーがサードパーティーの Cookie を許可するか、パーティション ストレージを使用するように設定されている必要があります。

REST API 認証ワークフローの場合

JWT を構成したら、認証アクセスのために、有効な JWT を REST API サインイン要求に追加する必要があります。詳細については、「連携アプリのアクセス スコープ」を参照してください。

既知の問題 (埋め込みのワークフローのみ)

接続済みアプリの使用にはいくつかの既知の問題がありますが、これらは今後のリリースで対処される予定です。

  • ツールバー機能: 埋め込みコンテンツにツールバーのパラメーターが定義されている場合、すべてのツールバー機能が動作するとは限りません。この問題を回避するには、次の例のようにツールバーのパラメーターを非表示にすることをお勧めします。

    <tableau-viz id='tab-viz' src='https://online.tableau.com/t/<your_site>/...'
    	toolbar='hidden'>
    </tableau-viz>

  • パブリッシュされたデータ ソース: データベースの認証資格情報の入力を求める [ユーザーにメッセージを表示] が設定されているパブリッシュされたデータ ソースは表示されません。この問題を回避するには、可能であれば、データ ソースの所有者がデータベースの認証資格情報を埋め込むことをお勧めします。

トラブルシューティング

埋め込まれたコンテンツがカスタム アプリケーションに表示されない場合、または Tableau REST API 認証に失敗する場合は、ブラウザのデベロッパー ツールを使用して、自分のTableau Cloudサイトで有効になっている EAS 機能に関連する可能性のあるエラー コードを検査および特定できます。

次の表を参照して、エラー コードの説明と可能な解決策を確認してください。

エラー コード 概要 説明 可能な解決策または説明
5 SYSTEM_USER_NOT_FOUND Tableau ユーザーが見つかりませんでした この問題を解決するには、JWT の 'sub' (サブジェクト) クレーム値が、認証された Tableau Cloud ユーザーのユーザー名 (メール アドレス) であることを確認します。この値では大文字と小文字を区別します。
16 LOGIN_FAILED ログインできませんでした このエラーは通常、JWT の次のクレームの問題のいずれかが原因で発生します。
  • 'exp' (有効期限) が既定の最大有効期間を超えています。この問題を解決するには、有効な JWT に必要な登録済みのクレーム(新しいウィンドウでリンクが開く)を確認し、正しい値が 10 分を超えないようにします。
  • 'sub' (サブジェクト) が、不明なユーザーを呼び出しています。この問題を解決するには、'sub' (サブジェクト) 値が、認証された Tableau Cloud ユーザーのユーザー名 (メール アドレス) であることを確認します。
142 EXTERNAL_AUTHORIZATION_SERVER_NOT_FOUND EAS が見つかりません この問題を解決するには、正しい発行元が呼び出されていることを確認します。
143 EXTERNAL_AUTHORIZATION_SERVER_LIMIT_EXCEEDED EAS 制限を超えました サイトは、登録済みの外部認証サーバー (EAS) の最大許容数 (1) に達しました。
144 INVALID_ISSUER_URL 発行元の URL が無効です 発行元の URL が無効であるか、"iss" (発行元) 属性が JWT にありません。
10081 COULD_NOT_RETRIEVE_IDP_METADATA EAS メタデータ エンドポイントがありません この問題を解決するには、EAS が正しく構成されており、正しい発行元が呼び出されていることを確認します。
10082 AUTHORIZATION_SERVER_ISSUER_NOT_SPECIFIED 発行元がありません この問題を解決するには、正しい発行元が呼び出されていることを確認します。
10083 BAD_JWT JWT ヘッダーに問題が含まれています このエラーは通常、JWT ヘッダーに関する次の問題のいずれかが原因で発生します。
  • 'secret key' (Kid) または 'clientId' (発行元) のクレームが JWT ヘッダーにありません。この問題を解決するには、この情報が含まれていることを確認します。
  • JWT が署名されていないか、暗号化されています。Tableau は、署名されていない JWT または暗号化された JWT をサポートしていません。
10084 JWT_PARSE_ERROR JWT に問題が含まれています

この問題を解決するには、次を確認します。

  • この JWT で参照される 'aud' (オーディエンス) 値が "tableau" 値を使用していることを確認します。この値は大文字と小文字が区別されます。
  • 'aud' (オーディエンス) と 'sub' (サブジェクト) は JWT に含まれています。
10085 COULD_NOT_FETCH_JWT_KEYS JWT がキーを見つけることができませんでした

シークレットを見つけることができませんでした。

この問題を解決するには、正しい発行元が呼び出されていることを確認します。

10087 BLOCKLISTED_JWS_ALGORITHM_USED_TO_SIGN JWT 署名アルゴリズムの問題

この問題を解決するには、署名アルゴリズムを削除します。

10088 RSA_KEY_SIZE_INVALID JWT 署名要件の問題 この問題を解決するには、EAS または IdP を使用して、JWT が 2048 ビットの RSA キー サイズで署名されていることを確認します。
10091 JTI_ALREADY_USED 一意の JWT が必要です

JWT はすでに認証プロセスで使用されています。この問題を解決するには、EAS または IdP が新しい JWT を生成する必要があります。

10094 MISSING_REQUIRED_JTI JWT ID がありません この問題を解決するには、JWT に 'jti' (JWT ID) が含まれていることを確認します。
10095 EXTERNAL_AUTHZ_SERVER_DISABLED EAS が無効です サイトに登録されている EAS の接続済みアプリが無効になっています。
ありがとうございます!