SlackのSAML認証設定をしてみました。
本当はZoomでやろうと思ったのですが、ZoomはSSOができるプランが月額¥2,700の「ビジネス」からで、その場合最低10ユーザーの契約が必要となるため、金額的に個人での契約は難しかったのです。
一方、Slackは、月額¥1,800(正確には消費税10%が加算されて、¥1,980/月)のビジネスプランで、ユーザー数の縛りは特にないため、Slackを契約してAzure ADのSSOを試してみることにしました。
Boxも同様の価格でユーザー数の縛りがなかったのですが、ゆくゆくはアラートの通知先としてSlackを指定する検証をしたいという思いがあり、今回はSlackとしました。
手順
手順ですが、MSがチュートリアルを用意してくれているので、これに従って実施をすればOKです。
チュートリアル:Azure Active Directory シングル サインオン (SSO) と Slack の統合 | Microsoft Docs
・・・なのですが、
Azure ADとSlackの認証連携 – Cloud Steady | パーソルプロセス&テクノロジー株式会社
CloudSteadyさんのこのブログのほうが親切かもしれないので、適宜参照すると良いと思います。
さて、それではやっていきます。
Slackにサインアップしてワークスペースを作成する
まずはSlackにサインアップしてワークスペースを作成します。そのうえで、ワークスペースURLをメモしておきます。ワークスペースURLは、https://xxxxx
ワークスペースURL中の「xxxxx」はワークスペース名とイコールになるとは限りません。私の場合はイコールではありませんでした。「xxxxx」の値は後で使うのでメモしておきます。
Azure Portalでエンタープライズアプリケーション作成
次に、AzurePortalにログインして、[Azure Active Directory]>エンタープライズアプリケーションをクリックし、新しいアプリケーションをクリックします。
この中からSlackを検索し、クリックします。
名前はこだわりがなければ、そのままで作成をクリックします。
Slackを利用できるユーザーとグループの割り当て
そしてここからユーザーとグループの割り当てです。1.ユーザーとグループの割り当て をクリックします。
私の場合は、「すべてのユーザー」を選択しました。Slackについては全ユーザー利用させたいと思ったからです。
シングルサインオンの設定
次にシングルサインオンの設定を行います。2. シングルサインオンの設定をクリックします。左メニューのシングルサインオンからでもOKです。
シングルサインオンの設定では、まずはじめに、識別子、応答URL、サインオンURLの設定をします。「基本的なSAML要求」にて編集をクリックします。
ここで、識別子、応答URL、サインオンURLの設定をしていくのですが、それぞれ以下のように設定します。
- 識別子:https://xxxxx.slack.com
- 応答URL:https://xxxxx
.slack.com/sso/saml - サインオンURL:https://xxxxx
.slack.com
※xxxxxは最初にメモしたワークスペースURLの一部です。
次がユーザー属性とクレームなのですが、私の場合は設定不要でした。ユーザーがメール アドレスを持っていない場合は、先のMSの参考手順に書いてある通りの登録をする必要があるようです。スキップします。
次は、SAML署名証明書です。証明書(Base64)をダウンロードしましょう。
その後、Slackのセットアップのところで、ログインURL、AzureAD識別子をコピーしておきます。
そして、Slackのセットアップボタンをクリックします。
Slackの画面に飛ぶので、認証から、SAML認証の「設定する」をクリックします。
右上のボタンをクリックして「テスト」モードにしてから、
- SAML SSOURL:Azure portal からコピーした ログイン URL の値
- IDプロバイダー発行者:Azure portal からコピーした Azure AD 識別子 の値
- 公開証明書:Azure portal からダウンロードした証明書をメモ帳で開いて全文貼り付け
- AuthnContextClassRef:このバリューは送信しない(*)
ここで一番下までいき、「テスト設定」をクリックします。
問題なければ、テストに合格したメッセージが表示されます。
下に行って、設定を保存をクリックします。
これでSSOの設定は完了です。動作確認として、MyAppポータルから、Slackを開いてみましょう。パスワードなし(SSO)でログインできたかと思います。
補足
さて、補足ですが、先の手順で
- AuthnContextClassRef:このバリューは送信しない(*)
を設定しないと、以下のようなエラーが出ます。
AADSTS75011: Authentication method 'X509, MultiFactor' by which the user authenticated with the service doesn't match requested authentication method 'Password, ProtectedTransport'. Contact the Slack application owner.
また、AzureADブラウザーの拡張機能をインストールしておけば、Slackの設定画面でログインURL、AzureAD識別子、証明書などをコピペするところを自動でやってくれるので便利です。
ということで手順は以上です。
今回は、Slackでアカウントをあらかじめ作成しておき、そのアカウントのログインをAzure ADからのSSOで行うという設定を実施しました。
次は、Azure ADでSlackにログインした際に、Slackのアカウントが自動作成される「オートプロビジョニング」の検証等をしてみたいと思っています。