Alteryx ServerでSAML認証を試す(Auth0編)

こんにちは。 DI部の兼本です。

Alteryx Serverを導入するにあたって、ユーザ認証の連携をしてシングルサインオンできるようにしたいというご要望をいただきます。
Alteryx Serverは認証方式として、

  • Build-in
  • Integrated Windows Authentication(Windows統合認証)
  • Integrated Windows Authentication with Kerberos
  • SAML Authentication

の4つの方式をサポートしています。

Windows統合認証との連携については、過去エントリで触れたことがあるのですが、今回、SAMLに対応した認証クラウドサービス「Auth0」に触れる機会がありましたので、Alteryx ServerのSAML認証設定に挑戦してみたいと思います。

Auth0とは?

Auth0はサーバーレスアーキテクチャを用いた認証クラウドサービス(Identity as a Service, IDaaS)で、認証基盤そのものをサービスとして提供するソリューションです。
個人的には前職時代に少しだけお付き合いがあったのですが、なんと、このたび弊社はAuth0社のパートナーになりました。

使用した環境

  • Windows 2012 Server R2 on AWS EC2
  • Alteryx Server 2019.1

Auth0側の設定

最初にAuth0のテナントを作成する必要があるのですが、これについては、Hideya Furuta(@furuth) さんの記事を見ていただくのがわかりやすいです。

テナントを作成したら、Alteryx Serverと連携するアプリケーションを作成します。

アプリケーションの作成

最初にAlteryx Serverと連携するためのアプリケーションを作成します。
左サイドメニューから「Applications」を選択し、「+Create Application」ボタンを押下します。

アプリケーションの作成画面が表示されるので、任意の名前をつけます。アプリケーションのタイプは「Regular Web App」を選択します。

アプリケーションを作成したら、「Settings」タブを開いて、いくつかの設定をします。

いろいろと設定できますが、動作を確認するだけなら、最低限以下の設定をすればOKです。

設定
Application Logo アプリケーションのロゴ(なんでもいいですが、URL指定でサイズは 150x150ピクセル推奨)
Allowed Callback URLs http(s)://[Alteryx ServerのFQDN名]/aas/Saml2/Acs
Allowed Logout URLs http(s)://[Alteryx ServerのFQDN名]/aas/Saml2/Acs

設定変更したら、画面下部の「Save Changes」ボタンを押下することを忘れないようにしてください。

Add-onの設定

続いて、「Add-on」タブを開いて、一覧から「SAML2 Web App」を押下します。

SAML2 Web Appの設定が表示されます。 ここにはSAML連携時に必要なオプション設定を行うことができ、Alteryx ServerはSAML連携時の暗号化方式としてSHA256のみサポートしているため、「Settings」に以下の記述をします。

{
  "signatureAlgorithm": "rsa-sha256",
  "digestAlgorithm": "sha256"
}

設定すると以下のようになります。ここも設定したあと、画面下部の「Save」ボタンを押下することを忘れないでください。

ユーザ作成

続いて、SAML認証時に使用するユーザアカウントを作成します。 ユーザアカウントの作成は、左サイドメニューから「Users &Roles > Users」を選択し、「+Create User」ボタンを押下します。

一覧から作成したユーザの名前(メールアドレス)をクリックすると「User Detail」が表示されますので、"firstName"と"lastName"というふたつのuser_metadataを作成しておきます。
このメタデータはAlteryx ServerとのSAML連携時に属性情報として使用します。
また、各属性の値に関しては、作成したユーザに合わせて適時変更するようにしてください。

{
  "firstName": "yuji",
  "lastName": "kanemoto+01"
}

設定すると以下のようになります。

ここも設定変更したら、「Save」ボタンを押下して保存することを忘れないでください。

ユーザを作成したら必ずユーザ認証(Verification)をすることを忘れないでください。
Verificationはユーザを選択してアクションから「Send Vverification Email」を実行します。ユーザ宛にアカウント認証のためのメール通知が実施されるので、メール本文に含まれるリンクをクリックしてアクティベートします。
これをやっておかないと、後工程でAlteryx Serverからのログイン認証が失敗します。(私はここでハマりました)

Ruleの作成

続いてRuleを作成します。 Ruleは、左サイドメニューから「Rules」を選択すると表示されます。

「+Create Rule」をクリックして新規にルールを作成します。 色々なテンプレートが表示されますが、今回は全く新規に作成するので「Empty Rule」で問題ありません。

「Edit Rule」という画面が表示されるので、以下のルールを記述します。ルールの名称は任意に設定してください。

function (user, context, callback) {
    context.samlConfiguration.mappings = {
      "email": "email",
      "firstName": "user_metadata.firstName",
      "lastName": "user_metadata.lastName",
    };
    callback(null, user, context);
}

Alteryx ServerはSAML連携時に"email"、"firstName"、"lastName"という属性情報を要求しますので、Auth0が持っているメタデータをAlteryx Serverに渡すSAML属性情報にマッピングするために使用しています。
属性情報の管理の仕方や、Ruleの作成方法には色々なやり方があると思いますが、今回の例では、user_metadataとして作成した情報をSAML属性にマッピングしています。

設定すると以下のようになります。

ここまでの作業でAuth0側の設定が完了しましたので次はAlteryx Server側の設定を行います。

Alteryx Server側の設定

Alteryx Serverをインストールした環境で、Alteryx System Settingsツールを起動します。
「Gallery>Authentication」の設定ページを表示して、「Authentication Type」として、「SAML Authentication」を選択します。

なお、Alteryx Serverのヘルプなどにも記載のある通り、Authentication Typeを変更後、別のTypeに変更すると動作に問題が起きる可能性がありますので、設定変更する場合は必ずバックアップを取得するようにしてください。

SAML Authenticationには、「IDP Metadata URL」と「X509 Certificate and IDP SSO URL」のふたつの方法が用意されていますが、今回はIDP Metadataを使用する方法を使います。

ここで設定するべき項目は3つです。

設定
ACS Base URL http(s)://[Alteryx ServerのFQDN名]/aas
IDP URL urn:[Auth0のテナントURL]
IDP Metadata URL Auth0で作成したアプリケーションのIDP Metadata URL

ここの設定は、何を指定すれば良いか分からずAlteryx社やAuth0社のサポートに問い合わせたりして、結構苦労しました。
IDP URLはAuth0側で作成したテナントのURLを指定しますが、接頭辞は「http(s)」ではなく「urn」を指定することに注意してください。
IDP Metadata URLは、Auth0のアプリケーション設定で「Setting」タブの下部にある「Show Advance Settings」をクリックすると表示されるタブから「Endpoints」を選択すると確認できます。

設定後の画面は以下のようになります。

上記の設定を実施したのち「Verify IDP」をクリックすると、Auth0のログイン画面が表示され、ここで先ほど作成したユーザのアカウント名(メールアドレス)とパスワードを入力することで連携設定ができます。

なお、ここで入力したユーザがAlteryx ServerのAdministratorユーザとして登録されることになります。

動作確認

Webブラウザから、Alteryx Gallery(ServerのWebインターフェース)にログインしてみます。

画面右上の「SIGN IN」ボタンをクリックすると、Auth0のログイン画面が表示されますので、Auth0で作成したユーザ名とパスワードを入力して「LOG IN」ボタンをクリックします。

このためだけに構築した環境なので、ここまでの苦労の割に地味な画面なのが残念ですが、ユーザプロファイルを確認するとAuth0に登録したユーザであることが確認できます。

まとめ

今回はSAML連携のためにAuth0を使用したのでBuild-inのデータベースにユーザを作成しましたが、Auth0はFacebookやGoogleなどとのソーシャル連携や二要素認証をビルトインで用意していたり、RDBMSなど既存システムとの連携も可能で非常に柔軟性の高い認証基盤を構築できます。
クラウドサービスなので自社で認証基盤を構築・運用する必要もなく、これから認証基盤を導入したいとお考えの方にオススメのソリューションです。

Auth0についてのお問い合わせはこちら

Auth0に関するクラスメソッドへのお問い合わせはこちらまでお願いします。

Alteryxの導入なら、クラスメソッドにおまかせください

日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。

alteryx_960x400