OAuth 2.0 信頼を使用して接続済みアプリを設定する

Tableau Cloud サイト管理者は、1 つまたは複数の外部認証サーバー (EAS) を登録し、OAuth 2.0 標準プロトコルを使用して Tableau Cloud サイトと EAS の間に信頼関係を確立できます。

重要:

  • このトピックの一部の手順では、サード パーティーのソフトウェアとサービスを使用して構成する必要があります。Tableau Cloud で EAS 機能を有効にする手順については最善を尽くして検証していますが、サードパーティのソフトウェアとサービスが変更されたり、ユーザーの組織の方針が異なる場合があります。問題が発生した場合、正式な構成の詳細情報とサポートについては、サードパーティーのドキュメントを参照してください。
  • セッション トークンを有効にするためには、外部アプリケーションと外部アプリケーションをホストするサーバーの時計が協定世界時 (UTC) に設定されている必要があります。いずれかの時計が異なる規格を使用している場合、接続済みアプリは信頼されません。

Tableau 接続済みアプリが OAuth 2.0 信頼と連携するしくみ

Tableau Cloud サイトと外部アプリケーション間の信頼関係は、JSON Web Token (JWT) 標準の認証トークンを通じて確立および検証されます。

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

接続済みアプリの主要コンポーネント

接続済みアプリの次のコンポーネントは、外部アプリケーションの JWT と連携して、ユーザーを認証し、埋め込みコンテンツを表示します。

  • 外部認証サーバー (EAS): ユーザーと外部アプリケーション間のインターフェイスとして機能するサーバー (通常は IdP)。サーバーは、保護された Tableau コンテンツへのユーザー アクセスを認証および承認します。

  • 発行者 URL: EAS インスタンスを一意に識別する URL。

接続済みアプリのワークフロー

埋め込みのワークフロー

次の図は、外部認証サーバー (EAS)、外部アプリケーション (Web サーバーと Web ページ)、Tableau 接続済みアプリ間の認証のしくみを示しています。

  1. ユーザーが Web ページにアクセスします: ユーザーが Web ページに埋め込まれたコンテンツにアクセスすると、Web ページが外部アプリケーションに GET 要求を送信します。

  2. 外部アプリケーションがリクエストを EAS にリダイレクトします: 外部アプリケーションが、外部認証サーバー (EAS) にリダイレクトする Web ページを使用して応答します。

  3. ユーザーが EAS で認証します: ユーザーが EAS を使用して認証および承認を行います。

  4. EAS が認証コードを使用して Web ページに応答します: EAS が認証コードを使用してページに応答し、Web ページにリダイレクトします。

  5. EAS が認証コードを JWT に変換します: Web ページが EAS を呼び出して認証コードを JWT に変換し、それを埋め込みコンテンツの URL に挿入します。

  6. Web ページが Tableau にコンテンツを要求します: Web ページが iFrame を読み込み、Tableau に GET リクエストを送信します。

  7. Tableau がトークンを検証します: Tableau が署名を使用して URL 内の JWT を検証し、コンテンツの要求に応答し、JWT で定義された埋め込みスコープを考慮します。

接続済みアプリを作成する

ステップ 1: 始める前に

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

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

値は "tableau:<site_luid>" である必要があります。

サイト LUID を取得するには、Tableau REST API のサイン イン メソッドを使用するか、以下の手順に従ってサイト ID をコピーします。注: サイト ID をコピーする前に、ここで説明する手順を使用して EAS を登録する必要があります。

  1. [設定] > [接続済みアプリ] を選択し、[外部認証サーバー] 接続済みアプリを選択します。
  2. [サイト ID をコピー] ボタンをクリックします。

"exp"有効期限

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

"jti"JWT IDJWT ID クレームは、JWT に一意の識別子を提供し、大文字と小文字を区別します。
"scp"スコープ

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

"tableau:views:embed"
"tableau:views:embed_authoring "
"tableau:metrics:embed" (2023 年 10 月 (Tableau 2023.3) で廃止)
"tableau:ask_data:embed "(2024 年 2 月に廃止 (Tableau 2024.1))

注:

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

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

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

https://tableau.com/odaオンデマンド アクセス - クレーム (機能を有効化)埋め込みのワークフローのみ。

値は "true" にして、1 つまたは複数の Tableau Cloud グループを指定する必要があります (次の行を参照)。詳細については、次のセクション「オンデマンド アクセス (埋め込みのワークフローのみ)」を参照してください。

https://tableau.com/groupsオンデマンド アクセス - クレーム (グループ名を指定)埋め込みのワークフローのみ。

値は、Tableau Cloud の 1 つまたは複数のグループの名前に一致する必要があります。詳細については、次のセクション「オンデマンド アクセス (埋め込みのワークフローのみ)」を参照してください。

動的 グループ メンバーシップ埋め込みのワークフローのみ。

値は、Tableau Cloud の 1 つまたは複数のグループの名前に一致する必要があります。詳細については、以下のセクション「動的グループ メンバーシップ (埋め込みワークフローのみ)」を参照してください。

(ユーザー属性)(ユーザー属性値)

埋め込みのワークフローのみ。

ユーザー属性を JWT に含めることができます。埋め込みコンテンツでユーザー属性関数が使用されると、Tableau は認証されたユーザーのコンテキストをチェックし、ランタイムに表示できるデータを決定します。

注:

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

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

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

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

サイトレベルの EAS について

Tableau Server 2024.2 以降では、サイトレベルの EAS を構成できます。サイトレベルで EAS を登録するには、Tableau サービス マネージャー (TSM) で接続済みアプリ有効にする必要があります。

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

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

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

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

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

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

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

  5. 接続済みアプリを作成したら、接続済みアプリのサイト ID をコピーします。サイト ID は、上記のステップ 1 で説明した JWT の "aud" (オーディエンス) クレームに使用されます。

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

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

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

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

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

埋め込み用のドメイン許可リストを使用してコンテンツを埋め込むことができる場所を制御する

2023 年 6 月 (Tableau 2023.2) より、Tableau REST API の「サイトの埋め込み設定の更新」メソッドを使用して、Tableau コンテンツを制限なしで埋め込むか、または特定のドメインに制限して埋め込むかを制御できるようになります。

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

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

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

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

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

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

接続済みアプリの管理

オンデマンド アクセス (埋め込みのワークフローのみ)

2023 年 10 月以降、サイトが埋め込み分析(新しいウィンドウでリンクが開く)の使用量ベースのモデルでライセンス設定されている場合、オンデマンド アクセスを使用して、Tableau の埋め込みコンテンツへのアクセスをさらに多くのユーザーに拡張できます。オンデマンド アクセスを使用すると、Tableau Cloud サイトでユーザーをプロビジョニングすることなく、接続されたアプリを通じて認証された Tableau の埋め込みコンテンツをユーザーが操作できるようになります。オンデマンド アクセスでは、埋め込みコンテンツへのアクセスをサポートするために、Tableau Cloud でユーザーを追加および管理する必要がなくなります。

オンデマンド アクセスの仕組み

オンデマンド アクセスを使用した埋め込み Tableau コンテンツへのアクセスは、コンテンツに継承される (たとえば、プロジェクトレベルで)、またはコンテンツに直接適用されるグループレベルのパーミッションで判断されます。サイト管理者、プロジェクト所有者またはリーダー、コンテンツ所有者などのユーザーは、コンテンツにグループレベルのパーミッションを割り当てることができます。オンデマンド機能を通じて有効化された埋め込みコンテンツにユーザーがアクセスすると、Tableau はコンテンツを表示する前に、JWT に正しいグループ メンバーシップのクレームが含まれていることを検証します。

前提条件

埋め込みコンテンツへのオンデマンド アクセスを有効にするには、次の基準を満たしている必要があります。

  1. サイトは埋め込み分析(新しいウィンドウでリンクが開く)のライセンスを使用量ベースのモデルで取得している
  2. グループに対してオンデマンド アクセス機能が有効になっている
  3. Tableau コンテンツに対してグループ パーミッションが指定されている
  4. Tableau 接続済みアプリが作成されている
  5. 接続済みアプリが使用する JWT に https://tableau.com/oda クレームと https://tableau.com/groups クレームが含まれている
  6. Tableau コンテンツが外部アプリケーションに埋め込まれている

これらの基準が満たされると、ユーザーはオンデマンド アクセス機能を通じて Tableau の埋め込みコンテンツを操作できるようになります。

オンデマンド アクセス機能の有効化

グループのオンデマンド アクセス機能を有効にするには、グループを作成または編集するときに、[Allow on-demand access (オンデマンド アクセスを許可する)] チェックボックスをオンにする必要があります。グループの作成の詳細については、「グループを作成してユーザーを追加する」を参照してください。

この機能は、Tableau REST API を使用して有効にすることもできます。詳細については、Tableau REST API ヘルプの Create Group(新しいウィンドウでリンクが開く) メソッドとUpdate Group(新しいウィンドウでリンクが開く) メソッドを参照してください。

オンデマンド アクセスが有効な場合の機能

埋め込み Tableau コンテンツにアクセスするユーザーには、コンテンツに対するビュー機能(新しいウィンドウでリンクが開く)が付与されます。ユーザーは、選択したテンプレートや、グループに設定されたカスタマイズ機能に関係なく、表示機能を持ちます (たとえば、Viewer のロールを持つユーザーは、特定のデータ ソースに関してダウンロードする機能が明示的に付与されている場合でも、その機能を使用できません)。

オンデマンド アクセスの監視

Advanced Management(新しいウィンドウでリンクが開く) で Tableau Cloud を使用している場合、アクティビティ ログを使用してオンデマンド アクセスの使用状況を監視できます。オンデマンド アクセスをキャプチャするアクティビティ ログのイベントには、アクセス ビューログインが含まれますが、これらに限定されません。これらのイベントの詳細については、「アクティビティ ログ イベント タイプ リファレンス」を参照してください。

制限事項

オンデマンド アクセスのワークフローでは、Tableau の埋め込みコンテンツにアクセスする特定のユーザーを、Tableau Cloud に対して匿名の一時的なユーザーにできるため、オンデマンド アクセス機能を通じて有効化された埋め込みコンテンツにアクセスするユーザーは次の機能を利用できません。

  • カスタム ビューを作成する
  • コンテンツの [共有] ボタンを使用してコンテンツを共有する
  • コンテンツをサブスクライブして情報のスナップショットをメールで受信する

注: 2024 年 2 月 (Tableau 2024.1) 以降、Tableau REST API リクエストはオンデマンド アクセスのユーザーとして行うことができます。

動的グループ メンバーシップ (埋め込みワークフローのみ)

2024 年 6 月 (Tableau 2024.2) 以降、接続済みアプリが設定されて機能が有効になっている場合、外部アプリケーションから送信した JWT に含まれるカスタム クレームを通じてグループ メンバーシップを動的に制御できます。

設定すると、ユーザー認証の際、外部アプリケーションは、ユーザーをアサートするグループ(https://tableau.com/groups) とグループ名 (「Group1」と「Group2」など) という、2 つのカスタム グループ メンバーシップ クレームを含む JWT を送信します。Tableau は JWT を検証し、グループと、そのグループにパーミッションが依存するコンテンツへのアクセスを有効にします。

詳細については、「アサーションを使用した動的グループ メンバーシップ」を参照してください。

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

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

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

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

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

トラブルシューティング

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

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

エラー コード概要説明可能な解決策または説明
5SYSTEM_USER_NOT_FOUNDTableau ユーザーが見つかりませんでしたこの問題を解決するには、JWT の 'sub' (サブジェクト) クレーム値が、認証済みの Tableau Cloud ユーザーのユーザー名 (メール アドレス) であることを確認します。この値は大文字と小文字が区別されます。
16LOGIN_FAILEDログインできませんでしたこのエラーは通常、JWT の次のクレームの問題のいずれかが原因で発生します。
  • 'exp' (有効期限) が既定の最大有効期間を超えています。この問題を解決するには、有効な JWT に必要な登録済みのクレーム(新しいウィンドウでリンクが開く)を確認し、正しい値が 10 分を超えないようにします。
  • 'sub' (サブジェクト) が、不明なユーザーを呼び出しています。この問題を解決するには、'sub' (サブジェクト) 値が、認証済みの Tableau Cloud ユーザーのユーザー名 (メール アドレス) であることを確認します。
67FEATURE_NOT_ENABLEDオンデマンド アクセスがサポートされていませんオンデマンド アクセスは、ライセンス認証されている Tableau Cloud サイトを介してのみ利用できます。
142EXTERNAL_AUTHORIZATION_SERVER_NOT_FOUNDEAS が見つかりませんこの問題を解決するには、正しい発行元が呼び出されていることを確認します。
143EXTERNAL_AUTHORIZATION_SERVER_LIMIT_EXCEEDEDEAS 制限を超えましたサイトは、登録済みの外部認証サーバー (EAS) の最大許容数 (1) に達しました。
144INVALID_ISSUER_URL発行元の URL が無効です発行元の URL が無効であるか、'iss' (発行元) 属性が JWT にありません。
149EAS_INVALID_JWKS_URIJWKS URI がありませんJWKS URI が IdP メタデータに存在しないか、JWKS URI が Tableau で構成されていません。この問題を解決するには、有効な JWKS URI を構成します。
150EAS_RETRIEVE_JWK_SOURCE_FAILEDキーソースの取得に失敗しましたこの問題を解決するには、 JWKS URI が正しく構成されていることを確認します。
151EAS_RETRIEVE_METADATA_FAILEDissuerUrl からメタデータを取得できませんでしたこの問題を解決するには、 JWKS URI が正しく構成されていることを確認します。
10081COULD_NOT_RETRIEVE_IDP_METADATAEAS メタデータ エンドポイントがありませんこの問題を解決するには、EAS が正しく構成されており、正しい発行元が呼び出されていることを確認します。
10082AUTHORIZATION_SERVER_ISSUER_NOT_SPECIFIED発行元がありませんこの問題を解決するには、正しい発行元が呼び出されていることを確認します。
10083BAD_JWTJWT ヘッダーに問題が含まれています'kid' (シークレット ID) または 'clientId' (発行元) のクレームが JWT ヘッダーにありません。この問題を解決するには、この情報が含まれていることを確認します。
10084JWT_PARSE_ERRORJWT に問題が含まれていますこの問題を解決するには、次を確認します。
  • この JWT で参照される 'aud' (オーディエンス) 値が "tableau" 値を使用していることを確認します。この値は大文字と小文字が区別されます。
  • 'aud' (オーディエンス) と 'sub' (サブジェクト) は JWT に含まれています。
10085COULD_NOT_FETCH_JWT_KEYSJWT がキーを見つけることができませんでしたシークレットを見つけることができませんでした。

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

10087BLOCKLISTED_JWS_ALGORITHM_USED_TO_SIGNJWT 署名アルゴリズムの問題この問題を解決するには、署名アルゴリズムを削除します。
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 に含まれていることを確認します。
10095EXTERNAL_AUTHZ_SERVER_DISABLEDEAS が無効ですサイトに登録されている EAS の接続済みアプリが無効になっています。
10096JWT_EXPIRATION_EXCEEDS_CONFIGURED_EXPIRATION_PERIOD 'exp' (有効期限) が既定の最大有効期間を超えています。この問題を解決するには、有効な JWT に必要な登録済みのクレーム(新しいウィンドウでリンクが開く)を確認し、正しい値が 10 分を超えないようにします。
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 を生成する必要があります。
10101EPHEMERAL_USER_LOGIN_FAILED_SITE_NOT_UBP_ENABLEDオンデマンド アクセスがサポートされていませんこのサイトには、オンデマンド アクセスを有効にするために必要な埋め込み分析の使用ベースのライセンスが設定されていません。詳細については、「ライセンス モデルを理解する」を参照してください。
10102EPHEMERAL_USER_NOT_SUPPORTEDiframe-auth 属性が有効になっている場合、オンデマンド アクセスはサポートされませんiframe-auth 属性が有効になっている場合、このエラーが発生する可能性があります。この問題を解決するには、Tableau 埋め込み API バージョン 3.6 以降が使用されていることを確認してください。
10103JWT_MAX_SIZE_EXCEEDEDJWT が最大サイズを超えていますJWT サイズが 8000 バイトを超えている場合、このエラーが発生する可能性があります。この問題を解決するには、必要なクレームのみが Tableau Cloud に渡されていることを確認してください。
フィードバックをお送りいただき、ありがとうございます。フィードバックは正常に送信されました。ありがとうございます!