Tableau Server 管理者は、外部認証サーバー (EAS) を登録し、OAuth 2.0 標準プロトコルを使用して Tableau Server と EAS の間に信頼関係を確立できます。信頼関係を確立することにより、Tableau Server 用に構成されている ID プロバイダー (IdP) を介して、カスタム アプリケーションに埋め込まれた Tableau コンテンツへのシングル サインオン (SSO) エクスペリエンスをユーザーに提供できます。埋め込まれた Tableau コンテンツがカスタム アプリケーションに読み込まれるときは、標準の OAuth フローが使用されます。ユーザーは IdP に正常にサインインした後、Tableau Server に自動的にサインインします。以下に説明する手順に従って、EAS を Tableau Server に登録します。

重要:

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

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

ステップ 1: 始める前に

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

クレーム 説明または必要な値
"kid" (キー ID) 必須 (ヘッダー内)アイデンティティ プロバイダーからの一意のキー識別子
"iss" (発行元) 必須 (ヘッダー内またはクレームとして)信頼できる接続済みアプリとその署名キーを識別する一意の発行者 URI
"alg" (アルゴリズム) 必須 (ヘッダー内)JWT 署名アルゴリズム。サポートしているアルゴリズム名の一覧は、javadoc.io ドキュメントの「Class JWSAlgorithm」(新しいウィンドウでリンクが開く)ページにあります。この署名アルゴリズムは、vizportal.oauth.external_authorization_server.blocklisted_jws_algorithmsのコマンドを使用して設定できます。
"sub" (サブジェクト) 認証された Tableau Server ユーザーのユーザー名
"aud" (オーディエンス) 値は "tableau" である必要があります。
"exp" (有効期限) 有効な JWT の有効期限が切れてはなりません。JWT の有効期限 (UTC) は、設定された最大有効期間の範囲内である必要があります。最大有効期間は、vizportal.oauth.external_authorization_server.max_expiration_period_in_minutes コマンドを使用して構成できます。
"jti" (JWT ID) JWT ID クレームは、JWT に一意の識別子を提供し、大文字と小文字を区別します。
"scp" (範囲)

サポートされている値は次のとおりです。

"tableau:views:embed"

"tableau:metrics:embed"

注:

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

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

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

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

EAS を登録すると、確立された信頼関係が Tableau Server 上のすべてのサイトに適用されます。

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

  1. Tableau Server 管理者として、Tableau サービス マネージャー (TSM) の Web UI にサインインします。詳細については、Tableau Services Manager の Web UI へのサインインを参照してください。

  2. [ユーザー ID とアクセス] > [Authorization Server (認証サーバー)] に移動し、次の手順を実行します。
    1. [Enable OAuth access for embedded content (埋め込みコンテンツの Oauth アクセスを有効にする)] チェック ボックスをオンにします。

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

    3. [保留中の変更を保存] ボタンをクリックします。

  3. 終了したら、次の手順を実行します。
    1. ページの右上隅にある [変更を保留中] ボタンをクリックします。

    2. ページの右下隅にある [変更を適用して再起動] ボタンをクリックして、Tableau Server を停止してから再起動します。

  1. クラスタの最初のノード (TSM がインストールされているノード) で管理者としてコマンド プロンプトを開きます。
  2. 次のコマンドを実行します。

    tsm configuration set -k vizportal.oauth.external_authorization.enabled -v true
    tsm configuration set -k vizportal.oauth.external_authorization_server.issuer -v "<issuer_url_of_EAS>"
    tsm restart

ステップ 3: 埋め込みの次のステップ

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

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

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

既知の問題

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

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

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

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

トラブルシューティング

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

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

エラー コード 概要 説明 可能な解決策または説明
5 SYSTEM_USER_NOT_FOUND Tableau ユーザーが見つかりませんでした
この問題を解決するには、JWT の 'sub' (サブジェクト) クレーム値が、認証済みの Tableau Server の "username" であることを確認します。この値では大文字と小文字を区別します。
16 LOGIN_FAILED ログインできませんでした このエラーは通常、JWT の次のクレームの問題のいずれかが原因で発生します。
10081 COULD_NOT_RETRIEVE_IDP_METADATA EAS メタデータ エンドポイントがありません この問題を解決するには、EAS が正しく構成されており、正しい発行元が呼び出されていることを確認します。
10082 AUTHORIZATION_SERVER_ISSUER_NOT_SPECIFIED 発行元がありません この問題を解決するには、正しい発行元が呼び出されていることを確認します。発行元の URL を変更するには、vizportal.oauth.external_authorization_server.issuer コマンドを使用します。
10083 BAD_JWT JWT ヘッダーに問題が含まれています このエラーは通常、JWT ヘッダーに関する次の問題のいずれかが原因で発生します。
  • 'secret key' (Kid) または 'clientId' (発行元) のクレームが JWT ヘッダーにありません。この問題を解決するには、この情報が含まれていることを確認します。
  • JWT が署名されていないか、暗号化されています。Tableau は、署名されていない JWT または暗号化された JWT をサポートしていません。
10084 JWT_PARSE_ERROR JWT に問題が含まれています

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

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

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

この問題を解決するには、正しい発行元が呼び出されていることを確認します。発行元の URL を変更するには、vizportal.oauth.external_authorization_server.issuer コマンドを使用します。

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

この問題を解決するには、署名アルゴリズムを削除します。詳細については、vizportal.oauth.external_authorization_server.blocklisted_jws_algorithmsを参照してください。

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

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

ありがとうございます!