Auth0を連携してTableau Serverの認証をSSOにしてみる #tableau
はじめに
こんにちは。大阪オフィスのDI部メンバー、tamaです。
Tableau ServerはSAMLの設定をすることができます。
SAML連携を利用することで、別のIdPプロバイダーを用意して、Tableau Serverの認証をそちらにお任せすることができます。また、他サービスの認証を既に何らかのサービスを使用してシングルサインオンにしている場合、Tableau Serverもそちらにまとめて、Tableau ServerもSSOでログインできるようにすることも可能です。
「SSOでログインが楽に!」というのもあるのですが、SAMLを設定するもう一つのメリットはセキュリティ面の強化です。というのも、Tableau Serverのローカル認証はパスワードポリシーを設定することができません。「何文字以上」「大文字必須」みたいな指定ができないんですね。また、定期的にパスワードを変更させるみたいな機能もありません。そういったものを別の認証サービスに肩代わりさせることでカバーする…という意味でもSAML設定は有効ですね。
というわけで今回は、最近パートナーにもなったAuth0を、Tableau Serverに連携させてみたいと思います。
本エントリの環境
- Tableau Server 2019.1
Auth0の概要及び初期設定
下記の冒頭部分をご覧ください。
Auth0側の設定を行う
Auth0を準備できたら、Auth0の設定画面を開きます。
アプリケーションの作成
最初にTableau Serverと連携するためのアプリケーションを作成します。 左サイドメニューから「Applications」を選択し、「+Create Application」ボタンを押下します。
アプリケーションの作成画面が表示されるので、任意の名前をつけます。アプリケーションのタイプは「Regular Web App」を選択します。
アプリケーションを作成したら、Addonsタブを選択し、「SAML2」というアドオンを選択します。
下記のような設定画面が開きます。さて、ここに何を入力するのでしょうか。
Tableau Server用に、SAML2アドオンを設定する
実は、Auth0のドキュメントに、Tableau Server用の設定が記載してあります。
上記ドキュメントには、Callback URLはhttp://{YOUR TABLEAU SERVER}/wg/saml/SSO/index.html
を指定しろと書いてあります。
また、アドオン設定画面のSettingに下記を入力するよう書いてあります。
{ "audience": "{YOUR TABLEAU AUDIENCE}", "recipient": "http://{YOUR TABLEAU SERVER}/wg/saml/SSO/index.html", "mappings": { "email": "username" }, "createUpnClaim": false, "passthroughClaimsWithNoMapping": false, "mapUnknownClaimsAsIs": false, "mapIdentities": false, "signatureAlgorithm": "rsa-sha1", "digestAlgorithm": "sha1", "destination": "http://{YOUR TABLEAU SERVER}/wg/saml/SSO/index.html", "lifetimeInSeconds": 3600, "signResponse": false, "nameIdentifierFormat": "urn:oasis:names:tc:SAML:2.0:attrname-format:basic", "nameIdentifierProbes": [ "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name" ] }
ただし、いくつか書き換える必要がある部分があります。
{YOUR TABLEAU SERVER}
これはTableau Serverのドメインを入力すればOKです。
{YOUR TABLEAU AUDIENCE}
こっちは何を入力すればいいのでしょうか。Auth0のアドオン設定画面のSettingの下部分に解説がありました。
Default will be the Issuer on SAMLRequest.
Issuer
はどこに書いとるんや…と思いますが、これはアドオン設定画面のUsageにあります。
これをそのままaudience
のところに貼り付けましょう。
mappingsについて
"mappings": { "email": "username" },
Auth0のドキュメントでは上記のようになっています。
これは、Auth0に登録されているユーザーのメールアドレスとTableau Serverのユーザー名をマッピングする、という設定になっています。この設定のままで使用すると、Tableau Serverのユーザー名を、Auth0に登録されているユーザーのメールアドレスにしないといけなくなります。
Tableau Serverを使ったことがある方ならわかると思いますが、Tableau Serverのユーザーはメールアドレス欄は別にあるので、ユーザー名は素直にユーザー名として使用すると思います。
今回は検証のため、デフォルト設定でいきたいと思います。ただ、例えば下記のようにすることで、Auth0に登録されているユーザーのNAME情報とTableau Serverのユーザー名をマッピングすることができます。
"mappings": { "name": "username" },
今回は、最終的に下記のような設定になりました。
メタデータのダウンロード
アドオン設定画面のUsageから、Tableau Serverで使用するためのxmlファイルをダウンロードしておきます。
Tableau Serverの設定を行う
Auth0側の設定が終わったら、Tableau Server側の設定を行います。
オレオレ証明書を作成する
Tableau ServerでSSOを実現するためには証明書が必要ですが、今回はブログのための検証なので、サクッとオレオレ証明書を作成します。
手順は下記と全く同じです。
TSMで設定
Tableau ServerのTSMにアクセスして、「構成」→「ユーザーIDとアクセス」→「認証方法」と移動します。
各項目を設定していきます。
認証方法
「SAML」
SAML
「サーバーのSAML認証を有効化」にチェック
ステップ1
- Tableau Server リターンURL
- Tableau ServerのURLを入力
- SAMLエンティティID
- Auth0のアドオン設定画面に記載されている
Issuer
を入力 - SAML証明書ファイル
- 先ほど作成した証明書をアップロード
- SAMLキーファイル
- 先ほど作成したキーファイルをアップロード
ステップ2と3
今回は使用しません
ステップ4
先ほどダウンロードしたAuth0のxmlファイルをアップロードします。
ステップ5
デフォルトのままでOKです。
ステップ6
デフォルトのままでOKです。
設定が完了したら「保留中の変更を保存」→「再起動」で、Tableau Serverを再起動しましょう。
実際にログインしてみる
検証用に「名前がメールアドレス」のユーザーを作成しておく
今回のAuth0のマッピング設定は、Auth0に登録されているユーザーのメールアドレスとTableau Serverのユーザー名をマッピングする、となっています。ですので、該当するメールアドレスがユーザー名となっているユーザーを作成します。
いざログイン
Tableau Serverにアクセスすると、自動的にAuth0の画面に遷移します。
ここでAuth0のアカウントを入力します。Tableau Serverのアカウントじゃないですよ。すると、Tableau Serverにログインできました!
おわりに
連携のキモは、Auth0側のマッピング設定です。
Auth0上で作成したユーザーのNAMEは自動的にメールアドレスになるため、Tableau Serverとの連携を本格的に考える場合は、色々ルールを検討したほうがよさそうです(Googleアカウントなど、他の方法でAuth0にユーザーを作成した場合はこの限りではありません)。
Auth0についてのお問い合わせはこちら
Auth0にご興味がありましたら、ぜひクラスメソッドへお問い合わせください!