オープンソース

Top

4. 認証サービス連携について

Rocket.Chatでは、様々な認証サービスを使ってユーザ認証を行うことができます。 現在サポートされている認証サービスは次の通りです。

  • CAS
  • LDAP
  • Oauth
  • SAML
  • WordPress

認証の設定は、管理画面の該当するメニューから設定が行えます。

_images/auth1.png

本書ではLDAPサービスとの連携例を解説します。

4.1. LDAPサービス連携

4.1.1. LDAPと連携できる情報

Rocket.ChatとLDAPを連携した場合、次のようなことができるようになります。

  • LDAPを利用してユーザ認証を行う
  • LDAPの属性値をRocket.Chatユーザ属性(IDやメールアドレス等)と同期する
  • LDAPのグループとロールをマッピングする
  • LDAPのグループと所属するチャンネルをマッピングする

4.1.2. 基本的なLDAP認証設定

まず基本的な内容として、LDAPのユーザを利用して認証・情報の同期を 行う設定についてです。

最初に、LDAPの設定画面の最上部の設定項目を設定します。

_images/ldap1.png

設定する内容は次の通りです。

  • 有効にする
    • 有効にするとLDAP連携機能が有効化されます。
  • ログインフォールバック
    • 有効にするとLDAP認証に失敗した場合に、ローカルユーザで認証を試みます。なお次章の注意点も確認してください。
  • ログイン後にユーザを検索する
    • ActiveDirectoryや一部LDAPサーバ特有のパスワード無しの認証の問題を回避するためのオプションです。特に問題無い場合、有効にすることを推奨します。
  • ホスト
    • LDAPサーバのドメインまたはIPアドレスを入力します
  • ポート
    • LDAPサーバのポートを入力します
  • 再接続
    • 有効化するとLDAPサーバと切断した場合に自動的に再接続を行います
  • 暗号化
    • LDAPサーバとの通信の暗号化方式を指定します。(StartTLS/SSL)
  • CA証明書
    • SSL証明書(CA)の内容を記載します
  • 認証できなければ拒否する
    • 検証できない証明書の扱いを選択します。自己署名証明書の場合、無効にします
  • ベースDN
    • LDAPの検索ベースDNを指定します
  • 内部ログレベル
    • LDAPに関するログのレベルを指定します
  • 接続テスト
    • 一度設定を保存すると、テスト用のボタンが表示されます

次に 認証 の項目を設定します。

_images/ldap2.png

認証の項目は、次の内容を設定します。

  • 有効
    • LDAPの認証を行う場合、有効を設定します
  • ユーザDN
    • LDAPのBIND DNを指定します
  • パスワード
    • BINDパスワードを指定します。

ここまでの設定で、LDAPとの基本的な接続の設定は完了しました。

次に同期とインポートの設定です。 ここからLDAPの属性とRocket.Chatのユーザ属性のマッピング設定に入ります。

まず ユーザ検索 の項目で、ユーザの検索フィールドを設定します。

_images/ldap3.png

最も単純な構成では、変更が必要なのは ユーザ名フィールド の項目です。 この項目は、ユーザを特定するためのフィールドとして使われます。 Rocket.Chatでログインした場合には、この情報を使ってLDAPにセルフバインドが行われます。 なおActive Directoryを利用している場合、変更の必要は無いかもしれません。

その他の項目は次の通りです。

  • 一意性を識別するフィールド
    • LDAPユーザーとRocket.Chatユーザーをリンクするためのフィールドです。複数の値をカンマ区切りで指定すると LDAP レコードからそれぞれ取得することを試みます。
  • 既定ドメイン
    • 指定されている場合、電子メール情報が取得できないユーザの電子メールアドレスのドメインとして、この情報を利用します
  • 既存のユーザをマージする
    • 有効化すると、LDAPと同じユーザIDを持つRocket.chatの内部ユーザの情報がマージされます。
  • データを同期する
    • 有効化するとログイン時にユーザデータ(名前・メールアドレス等)を同期します
  • ユーザデータのフィールドマップ
    • LDAPの属性とユーザアカウントの情報の対応付を設定します
  • LDAPグループの同期
    • 有効化するとLDAPのグループをロールとマッピングすることができます
  • ユーザロールの自動削除
    • 有効化するとLDAPグループと対応するロールのみが有効になり、Rocket.chatの内部ロールは無効化されます
  • ユーザグループフィルタ
    • ユーザがグループに所属しているかを確認するためのLDAPフィルタを指定します
  • LDAPグループBaseDN
    • グループの検索時に使われるBaseDNを指定します
  • ユーザデータグループマップ
    • グループとRocket.chatのロールのマッピングを指定します
  • LDAPグループをChannelに自動同期
    • 有効化するとLDAPグループに基づいてユーザを自動的にチャンネルに追加することができます
  • Channel管理者
    • 同期中に存在しないチャンネルが作成されると、この項目に指定したユーザが自動的にチャンネルの管理者になります
  • LDAPグループChannelマップ
    • LDAPのグループと自動追加するチャンネルのマッピングを指定します
  • ユーザのアバタを同期する
    • 有効化するとアバターの画像をLDAPから取得できます
  • ユーザアバターフィールド
    • アバター画像が保存されているLDAPフィールドを指定します
  • バックグラウンド同期
    • LDAPのデータを自動的に同期する周期を指定します
  • バックグラウンド同期で新しいユーザをインポートする
    • 有効化するとLDAPに新たに追加されたユーザをバックグラウンド同期でインポートします
  • バックグラウンド同期でユーザを更新する
    • 有効化すると、バックグラウンド同期でユーザデータの更新を行います

また、その他次のような設定があります。

  • タイムアウト
    • LDAPの処理全体のタイムアウトをミリ秒で指定します
  • 接続タイムアウト
    • 接続のタイムアウトをミリ秒で指定します
  • アイドルタイムアウト
    • LDAP操作後に接続を閉じるまでのタイムアウトをミリ秒で指定します
  • フィルタ
    • LDAPからユーザを検索する際の検索フィルタを指定します
  • 範囲
    • LDAPの検索スコープを指定します
  • 検索フィールド
    • 認証を行うためのフィールドを指定します
  • 検索ページサイズ
    • LDAP検索時の結果取得数を指定します
  • グループObjectClass
    • LDAPグループのオブジェクトクラスを指定します
  • グループID属性
    • グループのID属性を指定します
  • グループメンバ属性
    • グループのメンバ属性を指定します
  • グループメンバーフォーマット
    • LDAPのグループに登録されているメンバーデータの形式を指定します
    • 例: uid=#{username},ou=users,o=Company,c=com

以上の設定を行い、設定の保存すると次回ログインからLDAPに登録されたユーザで ログインできるようになります。

4.2. LDAP連携の注意点

4.2.1. ログインフォールバックについて

ログインフォールバックを無効にする場合、管理者ユーザがLDAPに存在する必要があります。ロールのマッピング等がうまくいっていることを確認した後に、無効にするようにしてください。

4.2.2. パスワードの同期について

基本的にLDAPとRocket.Chatのパスワードは、同期されません。 ただしLDAPを利用したログイン時に、パスワードがRocket.Chatの内部DBに保存されます。 上記のログインフォールバックの機能では、この内部DBに保存されたDBでログインができる状態が維持されます。

便利な機能ですが、問題も存在します。例えば次のような状況が発生します。

  1. LDAPでRocket.Chatに初回ログイン(内部DBに登録されるパスワード: original)
  2. LDAP上でパスワードを変更(変更後のパスワード: newpassword)
  3. Rocket.Chatに古いパスワード(original)を利用してログインする
  4. ログインができる

これは内部的には、LDAP認証が失敗した後フォールバックして、内部DBのパスワードを利用して認証するため発生する問題です。

現状この問題の根本的な回避策は存在しないため、LDAPでパスワードを変更した際には、 運用ルールとして、Rocket.Chatに再ログインさせるなどの措置が必要です。

Top