こんにちは。エンジニアの mori です。
Mattermostを取り扱っていると、やはりオンプレでの利用を考えているというお問い合わせを受けることがあります。
そして、オンプレで利用する場合になるべく運用を軽減させたいので、ユーザ管理や認証周りをActiveDirectoryと連携させたい。
そういったニーズはやはり多いのかもしれないですね。
今日はMattermostとActiveDirectoryの連携の手順をご紹介したいと思います。
準備
まずは設定していく前に環境の準備です。
今回の検証になりますので、Mattemostの30日のトライアルライセンスを利用します。こちらから入手して下さい。
ActiveDirectoyやMattemostの構築手順はここでは割愛しますが、以下のような構成を組みました。
ActiveDirectoryは社内ネットワークに配置されるのが基本ですので、プライベートネットワークに構築ですね。
ドメイン名 : ad.d-make.local
構成図:

設定内容
Mattemostの構築が完了したら、Mattermostへ接続します。
初回接続時にシステム管理者を作成します。
「email」、「username」、「password」を入力して「Create Account」をクリックします。

システム管理者の作成ができたら、まずはチームを作成しましょう。「Create a team」をクリックします。

チーム名を入力して、「Next」をクリックします。

チームURLを確認し、「Finish」をクリックします。

Mattermost上にチームが作成され、チャット画面が表示されます。作成直後の言語設定は「英語」ですので、「Account Settings」から「Language」を選択し、「日本語」に変更しましょう。詳細は過去ブログで紹介しています。Mattermostをインストールしたら行うべき5つの設定をご覧ください。

言語が日本語になったら、もう怖いものなしです。
システムコンソールを開きましょう。準備でMattermostトライアルライセンスファイルを投入します。
左メニューの認証カテゴリから「AD/LDAP」をクリックします。無事にライセンス登録ができていると、詳細が編集できるようになっているばずです。それでは、具体的な設定項目ついて解説します。
まず、AD/LDAPでのサインインを有効にするを「有効」を選択します。

有効にすることで設定項目が入力できるようになります。まずは、AD/LDAPサーバのIPアドレスを入力します。

接続のセキュリティー、秘密鍵、公開証明書、証明書の検証をしないなどのセキュリティに関する設定は環境に合わせて実施して下さい。
今回の検証ではデフォルトとしました。

BaseDN(ベースDN)、バインドユーザ名とパスワードを入力します。
バインドユーザはあらかじめ、ActiveDirectoyにユーザを作っておく必要があります。「Administrator」でもできますが、専用のアカウントを作成することを推奨します。
今回のテスト用のドメイン「ad.d-make.local」の場合の、BaseDNは「DC=ad,DC=d-make,DC=local」です。

フィルター(ユーザフィルターやゲストフィルター、管理者フィルター)、グループに関しての設定、名前と苗字についてはオプションですので今回は設定しません。
これらの設定を行うことで、Mattemostを利用させるユーザやゲストユーザを特定したりできるようです。
電子メール属性、ユーザ名の属性、ID属性、ログイン属性が必須項目です。今回検証で使用した設定値は以下になります。
- 電子メール:userPrincipalName
- ユーザー名の属性:sAMAccountName
- ID属性:objectGUID
- ログインID属性:sAMAccountName


設定が完了したら、下部にある「保存する」をクリックします。
「AD/LDAPテスト」をクリックすると接続テストができますので接続テストを実施してください。
「AD/LDAPテストが成功しました」が表示されれば問題ありません。

動作確認
「AD/LDAPテスト」まで終わったら、実際にドメインユーザでログインしてみましょう。
クライアントでもブラウザでもいいのでMattermostへ接続します。
理由については後述しますが、招待リンクを経由してドメインユーザでログインするのがいいでしょう。
EmailとAD/LDAPが選択できるので、「AD/LDAP Credentials」を選択します。

テスト用に作成したドメインユーザでログインします。

認証が成功し、ログインできれば、無事にチームに参加できました。

念のため、メンバー一覧も確認してました。ドメインユーザの「testuser01@ad.d-make.local」が登録されていました。

検証補足
ちなみに、招待リンクを利用しないで直接MattermostのURLをたたいてみます。
ログインはできますが、チームに所属していないので、以下のような画面が表示されました。

どこのチームにも所属しない状態でログインしてしまうので招待してもらうか、チームを作る必要があるようです。
※ユーザごとにチームを乱立されてしまうとちょっと管理が大変かと思いますので、案内には注意が必要ですね。
さいごに
ActiveDirectoryは認証以外にもグループの同期などもできます。詳細は公式のドキュメントを参照ください。
参考URL:Mattermostドキュメント(Active Directory/LDAP 設定)
また、今回はトライアルライセンスを使用しましたが、ActiveDirectoryとの連携ができるのはE10以降の有償版となります。利用人数によってはコストが高くなりますので、よく検討の上、導入をご検討下さい。
