こんにちは、サービスデリバリーセンター(SDC)のn-satoです。

 

この記事は「CRESCO Advent Calendar 2019」の6日目の記事です。

Tableau ServerへのログインをAWS Cognito(以下Cognito)のホストUIを用いてOpenID Connectを構成する機会があったのでその時の実装を書いておこうと思います。

OpenID Connect認証連携はTableauのヘルプに導入要件や手順が書いてあるのでそれを参考にします。

※Tableau Server 2019.3で実施してます。

やること

  • Tableau Serverにユーザーを作成
  • Cognitoにユーザープールを作成
  • Tableau ServerとCognitoを連携する
  • ログインする

Tableau Serverにユーザーを作成

Tableau ServerのOpenID Connect認証の概要のSTEP7を見ると、赤下線部分に・・・

デフォルトではemailとユーザー名を検索する仕組みとのことなので、ユーザー名はメールアドレスで作成しておきます。
(モザイクかかってますがメールアドレスです。)

Cognitoにユーザープールを作成

新規でユーザープールを作成します。
Tableau Serverへemailを連携したいので、標準属性にはemailを指定します。

アプリクライアントの「クライアントシークレットを生成」にチェックをします。

ドメインのプレフィックスも設定しておきます。

上記以外はとりあえずデフォルトで設定します。

ユーザープールの作成が終わったらログイン用のユーザーを作成します。

作成後、CognitoのホストUIを使って初回ログインも済ませておきます。

Tableau ServerとCognitoの連携

Tableau ServerのTSMにログインしてOpenID Connectの設定を行います。
[User Identity & Access] > [Authentication Method]

  • Provider client ID、Provider client secret

CognitoのクライアントID、クライアントシークレットを指定します。

[Cognitoのユーザープール] > [全般設定] > [アプリクライアント] で確認できます。

  • Provider configuration URL

IdP(今回はCognito) が OpenID Connect の検出に使用するエンドポイントの URL を指定します。お決まりのURL形式で、Cognitoでは以下の形式です。

https://cognito-idp.[リージョン名].amazonaws.com/[プールID]/.well-known/openid-configuration

[プールID]は[Cognitoのユーザープール] > [全般設定]で確認できます。

  • Tableau ServerのURL

Tableau Serverへアクセスする URLを指定します。名前解決しない場合は「https://[サーバーIP]」です。
CognitoのコールバックURLのプロトコルはhttpsにする必要があるため、赤線にあるようにTableau Serverはhttpsでアクセスできるようあらかじめ構成しておく必要があります。

3項目入力してSaveするとstep.3の欄にURLが自動生成されます。そのURLをCognitoのコールバックURLに使用します。

設定反映のための再起動も済ましておきます。
Cognito側にTableau Serverの情報を設定していきます。
[Cognitoのユーザープール] > [アプリの統合] > [アプリクライアントの設定]

  • コールバックURL

Tableau Serverのstep.3に出力されたURLを指定します。Tableau のヘルプのリダイレクトの項目にあるように、以下のような形式のURLになっています。

<protocol>://<host>/vizportal/api/web/v1/auth/openIdLogin

  • OAuthのスコープ

Tableau Serverは[sub]属性とか[email]属性が必要みたいなので、[email][openid][profile]あたりを指定しておきます。

ログインする

ログインをしてみます。

Tableu ServerのURLをブラウザに入力すると、リダイレクトされてCognitoのホストUIが表示されました。

Cognitoで設定したユーザー名、パスワードを入力し[Sign in]。

無事ログインできました。良かったです。

おわりに

Tableau ServerとAWS CognitoでOpenID Connect認証連携ができました。
これでSSO的な動きができるようになるのかな・・・

調査していてCognito自体をIdpとして使用することと、サードパーティ製品をIdpとしてCognitoと連携することがごっちゃになりやすかったです。