オープンソース

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の検索スコープを指定します
  • 検索ページサイズ
    • 検索時のエントリの最大数を指定します
  • 検索サイズ制限
    • 検索時に返す項目の最大数を指定します

次に属性のマッピングの設定を行います 設定は 同期とインポート の項目から行います。

_images/ldap4.png

設定が必須なのは次の3つです。

  • ユーザ名フィールド
    • Rocket.ChatのユーザIDとして利用するLDAP属性を指定します
    • #{givenName}.#{sn} のように、複数の属性値を連結することもできます
  • 一意性を識別するフィールド
    • ユーザの一意性を確認するための属性をカンマ区切りで列挙します
  • ユーザデータフィールドのマッピング
    • LDAP属性とRocket.Chatのユーザ属性をjson形式でマッピングします
    • {"cn": "name","mail": "email"} のように {"LDAP属性":"Rocket.Chat属性"} の形式で記述します
    • Rocket.Chatの属性名として利用できるのは、nameとemailです

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

  • 既定ドメイン
    • メールアドレスがLDAPからインポートできない場合に、メールアドレスを自動作成するためのドメインを定義します
  • 既存のユーザをマージする
    • 有効にすると、Rocket.Chatのローカルユーザの情報が、LDAPの属性値で上書きされます
  • データを同期する
    • ログイン時にLDAPのユーザ情報を、ローカルDBに同期します
  • LDAPグループの同期
    • 有効化すると、ユーザが所属するLDAPグループとロールやチャンネルをマッピングできるようになります
  • LDAPグループBaseDN
    • LDAPグループの検索ベースDNを指定します
  • ユーザグループフィルタ
    • ユーザがグループに所属しているか確認するためのLDAP検索フィルタを指定します
  • ユーザデータグループマップ
    • LDAPグループをRocket.Chatのロールにマッピングします
    • json形式で記述します
{
        "ldap-admin": "admin",
        "developer": "user"
}
  • LDAPグループをChannelに自動同期
    • 有効化するとLDAPグループに基づいて、自動的にユーザがチャンネルに追加されます
  • LDAPグループchannelマップ
    • LDAPグループをRocket.Chatのチャンネルにマッピングします
    • json形式で記述します
{
        "employee": "general",
        "techsupport": [
                "helpdesk",
                "support"
        ]
}
  • channelからのユーザの自動削除
    • 有効化するとLDAPグループに所属していないユーザを自動的にチャンネルから削除します
  • ユーザのアバターを同期します
    • 有効化するとLDAPのjpegPhoto属性やthumbnailPhoto属性の値をアバター画像に同期します
  • バックグラウンド同期
    • 有効化するとバックグラウンド同期間隔毎に、同期が行われます
  • バックグラウンド同期で新しいユーザをインポートする
    • 有効化すると自動的に新しいユーザが登録されます
  • バックグラウンド同期で既存のユーザを更新する
    • 有効化すると自動的にユーザ情報が更新されます

以上の設定を行い、設定の保存すると次回ログインから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