EAS を登録して埋め込みコンテンツの SSO を有効にする

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

  • Tableau Server に構成されている ID プロバイダー (IdP) を介して、外部アプリケーションに埋め込まれた Tableau コンテンツへのシングル サインオン (SSO) エクスペリエンスをユーザーに提供する
  • Tableau REST API (および Tableau Server 2023 年 10 月以降はメタデータ API) へのアクセスを、ユーザーに代わって JSON Web Token (JWT) を使用してプログラムで承認できる

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

重要:

  • このトピックの一部の手順では、サード パーティーのソフトウェアとサービスを使用して構成する必要があります。Tableau Server で EAS 機能を有効にする手順については最善を尽くして検証していますが、サードパーティのソフトウェアとサービスが変更されたり、ユーザーの組織の方針が異なる場合があります。問題が発生した場合、正式な構成の詳細情報とサポートについては、サードパーティーのドキュメントを参照してください。
  • EAS を介した埋め込みを有効にするには、HTTP トラフィックに対して SSL を使用するように Tableau Server を構成する必要があります。
  • セッション トークンを有効にするためには、外部アプリケーションと外部アプリケーションをホストするサーバーの時計が協定世界時 (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 IDJWT ID クレームは、JWT に一意の識別子を提供し、大文字と小文字を区別します。
"scp"スコープ

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

"tableau:views:embed"
"tableau:views:embed_authoring " (Tableau Server 2022.3 で追加)
"tableau:metrics:embed" (Tableau Server 2023.3 で廃止)
"tableau:ask_data:embed "(Tableau Server 2023.1 で追加。 Tableau Server 2024.2 で廃止予定)

注:

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

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

認証に REST API を使用するメタデータ API ワークフローの場合、サポートしているスコープは tableau:content:read のみです。

注: 上記の 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 サービス マネージャーの 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 Server 2023.3 より、Tableau REST API の「サイトの埋め込み設定の更新」メソッドを使用して、Tableau コンテンツを制限なしで埋め込むか、または特定のドメインに制限して埋め込むかを制御できるようになります。

既定では、埋め込み用のサイト設定 unrestrictedEmbeddingtrue に設定されており、制限なしで埋め込むことができます。または、この設定を false に設定し、allowList パラメーターを使用して、外部アプリケーションの Tableau コンテンツを埋め込むドメインを指定することができます。

詳細については、次のいずれかまたは両方を参照してください。

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

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

メタデータ API ワークフローの場合

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

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

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

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

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

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

トラブルシューティング

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

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

エラー コード概要説明可能な解決策または説明
5SYSTEM_USER_NOT_FOUNDTableau ユーザーが見つかりませんでした
この問題を解決するには、JWT の 'sub' (サブジェクト) クレーム値が、認証済みの Tableau Server の "username" であることを確認します。この値は大文字と小文字が区別されます。
16LOGIN_FAILEDログインできませんでしたこのエラーは通常、JWT の次のクレームの問題のいずれかが原因で発生します。
67FEATURE_NOT_ENABLEDオンデマンド アクセスがサポートされていませんオンデマンド アクセスは、ライセンス認証されている Tableau Cloud サイトを介してのみ利用できます。
10081COULD_NOT_RETRIEVE_IDP_METADATAEAS メタデータ エンドポイントがありませんこの問題を解決するには、EAS が正しく構成されており、正しい発行元が呼び出されていることを確認します。
10082AUTHORIZATION_SERVER_ISSUER_NOT_SPECIFIED発行元がありませんこの問題を解決するには、正しい発行元が呼び出されていることを確認します。発行元の URL を変更するには、vizportal.oauth.external_authorization_server.issuer コマンドを使用します。
10083BAD_JWTJWT ヘッダーに問題が含まれています'kid' (シークレット ID) または 'clientId' (発行元) のクレームが JWT ヘッダーにありません。この問題を解決するには、この情報が含まれていることを確認します。
10084JWT_PARSE_ERRORJWT に問題が含まれていますこの問題を解決するには、次を確認します。
  • この JWT で参照される 'aud' (オーディエンス) 値が "tableau" 値を使用していることを確認します。この値は大文字と小文字が区別されます。
  • 'aud' (オーディエンス) と 'sub' (サブジェクト) は JWT に含まれています。
10085COULD_NOT_FETCH_JWT_KEYSJWT がキーを見つけることができませんでしたシークレットを見つけることができませんでした。

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

10087BLOCKLISTED_JWS_ALGORITHM_USED_TO_SIGNJWT 署名アルゴリズムの問題この問題を解決するには、署名アルゴリズムを削除します。詳細については、vizportal.oauth.external_authorization_server.blocklisted_jws_algorithmsを参照してください。
10088RSA_KEY_SIZE_INVALIDJWT 署名要件の問題この問題を解決するには、EAS または IdP を使用して、JWT が 2048 ビットの RSA キー サイズで署名されていることを確認します。
10091JTI_ALREADY_USED一意の JWT が必要ですJWT はすでに認証プロセスで使用されています。この問題を解決するには、EAS または IdP が新しい JWT を生成する必要があります。
10092NOT_IN_DOMAIN_ALLOW_LIST埋め込みコンテンツのドメインが指定されていませんこの問題を解決するには、設定 unrestrictedEmbeddingtrue に設定されていること、または domainAllowlist パラメーターに、Tableau REST API の「サイトの埋め込み設定の更新(新しいウィンドウでリンクが開く)」メソッドを使用して Tableau コンテンツを埋め込むドメインが含まれていることを確認してください。
10094MISSING_REQUIRED_JTIJWT ID がありませんこの問題を解決するには、'jti' (JWT ID) が JWT に含まれていることを確認します。
10096JWT_EXPIRATION_EXCEEDS_CONFIGURED_EXPIRATION_PERIOD 'exp' (有効期限) が既定の最大有効期間を超えています。この問題を解決するには、有効な JWT に必要な登録済みのクレーム(新しいウィンドウでリンクが開く)を確認し、正しい値を使用するようにします。最大有効期間を変更するには、vizportal.oauth.external_authorization_server.max_expiration_period_in_minutes コマンドを使用します。
10097SCOPES_MALFORMEDスコープ クレームに関する問題このエラーは、'scp' (スコープ) クレームが JWT にないか、リスト型として渡されていない場合に発生する可能性があります。この問題を解決するには、'scp' が JWT に含まれ、リスト型として渡されていることを確認します。JWT に関するトラブルシューティングのヘルプについては、auth0 サイトの「デバッガー(新しいウィンドウでリンクが開く)」を参照してください。
10098JWT_UNSIGNED_OR_ENCRYPTEDJWT が署名されていないか、暗号化されていますTableau は、署名されていない JWT または暗号化された JWT をサポートしていません。
10099SCOPES_MISSING_IN_JWTスコープのクレームがありませんJWT に必要な 'scp' (スコープ) クレームがありません。この問題を解決するには、'scp' が JWT に含まれていることを確認します。JWT に関するトラブルシューティングのヘルプについては、auth0 サイトの「デバッガー(新しいウィンドウでリンクが開く)」を参照してください。
10100JTI_PERSISTENCE_FAILED予期しない JWT ID エラー'jti' (JWT ID) で予期しないエラーが発生しました。この問題を解決するには、新しい 'jti' で新しい JWT を生成する必要があります。
10103JWT_MAX_SIZE_EXCEEDEDJWT が最大サイズを超えていますJWT サイズが 8000 バイトを超えている場合、このエラーが発生する可能性があります。この問題を解決するには、必要なクレームのみが Tableau Server に渡されていることを確認してください。
フィードバックをありがとうございます。フィードバックは正常に送信されました。ありがとうございます!