HONDA LABO

本田研究室

SlackにAzure ADのSSOでログインしてみる

SlackのSAML認証設定をしてみました。

本当はZoomでやろうと思ったのですが、ZoomはSSOができるプランが月額¥2,700の「ビジネス」からで、その場合最低10ユーザーの契約が必要となるため、金額的に個人での契約は難しかったのです。

f:id:Lync:20211109101104j:image

一方、Slackは、月額¥1,800(正確には消費税10%が加算されて、¥1,980/月)のビジネスプランで、ユーザー数の縛りは特にないため、Slackを契約してAzure ADのSSOを試してみることにしました。

f:id:Lync:20211109101100j:image

Boxも同様の価格でユーザー数の縛りがなかったのですが、ゆくゆくはアラートの通知先としてSlackを指定する検証をしたいという思いがあり、今回はSlackとしました。

f:id:Lync:20211109101110j:image

 

手順

手順ですが、MSがチュートリアルを用意してくれているので、これに従って実施をすればOKです。 

チュートリアル:Azure Active Directory シングル サインオン (SSO) と Slack の統合 | Microsoft Docs 

・・・なのですが、

Azure ADとSlackの認証連携 – Cloud Steady | パーソルプロセス&テクノロジー株式会社

CloudSteadyさんのこのブログのほうが親切かもしれないので、適宜参照すると良いと思います。

さて、それではやっていきます。

 

Slackにサインアップしてワークスペースを作成する

まずはSlackにサインアップしてワークスペースを作成します。そのうえで、ワークスペースURLをメモしておきます。ワークスペースURLは、https://xxxxx.slack.com となっていると思います。

ワークスペースURL中の「xxxxx」はワークスペース名とイコールになるとは限りません。私の場合はイコールではありませんでした。「xxxxx」の値は後で使うのでメモしておきます。

 

Azure Portalでエンタープライズアプリケーション作成

次に、AzurePortalにログインして、[Azure Active Directory]>エンタープライズアプリケーションをクリックし、新しいアプリケーションをクリックします。

f:id:Lync:20211109101121j:image

 

この中からSlackを検索し、クリックします。

f:id:Lync:20211109101126j:image

 

名前はこだわりがなければ、そのままで作成をクリックします。

f:id:Lync:20211109101130j:image

 

Slackを利用できるユーザーとグループの割り当て

そしてここからユーザーとグループの割り当てです。1.ユーザーとグループの割り当て をクリックします。

f:id:Lync:20211109101134j:image

 

私の場合は、「すべてのユーザー」を選択しました。Slackについては全ユーザー利用させたいと思ったからです。

f:id:Lync:20211109101138j:image

 

シングルサインオンの設定

次にシングルサインオンの設定を行います。2. シングルサインオンの設定をクリックします。左メニューのシングルサインオンからでもOKです。

f:id:Lync:20211109101143j:image

 

シングルサインオンの設定では、まずはじめに、識別子、応答URL、サインオンURLの設定をします。「基本的なSAML要求」にて編集をクリックします。

f:id:Lync:20211109102005j:plain

 

ここで、識別子、応答URL、サインオンURLの設定をしていくのですが、それぞれ以下のように設定します。

※xxxxxは最初にメモしたワークスペースURLの一部です。

 

次がユーザー属性とクレームなのですが、私の場合は設定不要でした。ユーザーがメール アドレスを持っていない場合は、先のMSの参考手順に書いてある通りの登録をする必要があるようです。スキップします。

f:id:Lync:20211109101149j:image

 

次は、SAML署名証明書です。証明書(Base64)をダウンロードしましょう。

f:id:Lync:20211109101153j:image

 

その後、Slackのセットアップのところで、ログインURL、AzureAD識別子をコピーしておきます。

f:id:Lync:20211109101218j:image

 

そして、Slackのセットアップボタンをクリックします。

f:id:Lync:20211109101229j:image

 

Slackの画面に飛ぶので、認証から、SAML認証の「設定する」をクリックします。

f:id:Lync:20211109101234j:image

 

右上のボタンをクリックして「テスト」モードにしてから、

  • SAML SSOURL:Azure portal からコピーした ログイン URL の値
  • IDプロバイダー発行者:Azure portal からコピーした Azure AD 識別子 の値
  • 公開証明書:Azure portal からダウンロードした証明書をメモ帳で開いて全文貼り付け
  • AuthnContextClassRef:このバリューは送信しない(*)

f:id:Lync:20211109101239j:image

 

ここで一番下までいき、「テスト設定」をクリックします。

f:id:Lync:20211109101158j:image

 

問題なければ、テストに合格したメッセージが表示されます。

f:id:Lync:20211109101204j:image

 

下に行って、設定を保存をクリックします。

f:id:Lync:20211109101208j:image

 

これで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.

f:id:Lync:20211109101212j:image

 

また、AzureADブラウザーの拡張機能をインストールしておけば、Slackの設定画面でログインURL、AzureAD識別子、証明書などをコピペするところを自動でやってくれるので便利です。

f:id:Lync:20211109101225j:image

 

ということで手順は以上です。

今回は、Slackでアカウントをあらかじめ作成しておき、そのアカウントのログインをAzure ADからのSSOで行うという設定を実施しました。

次は、Azure ADでSlackにログインした際に、Slackのアカウントが自動作成される「オートプロビジョニング」の検証等をしてみたいと思っています。