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にご興味がありましたら、ぜひクラスメソッドへお問い合わせください!

お問い合わせはこちら