BLOGSpeee開発陣による技術情報発信ブログです。バックエンド技術Tweetはじめまして。「おもしろ関西人」です。どれだけおもしろいかは実際にお会いしてからのお楽しみ。業務ではメディア事業部のエンジニアとして自社メディアの開発を行っています。FuelPHPでLDAP認証を実現する社内向けシステムが複数ある場合、ユーザ(社員)のアカウントをシステムごとに持っていると管理が大変です。・ユーザ情報を一元管理して各社内システムで利用したい・どの社内システムでも同じユーザ名、パスワードでログインしたいそんな要望がある場合、LDAPを利用することが選択肢の一つになります。今回はPHPフレームワークの1つであるFuelPHPにLDAP認証機能を追加する方法を紹介します。アクセスするためのプロトコルです。ディレクトリサービスとは、ネットワークを利用するユーザ名やマシン名などの様々な情報を管理するためのサービスです。複数の端末から同じユーザでアクセスしたい場合などに使われます。LDAPプロトコルの実装としては、オープンソースのOpenLDAPの他、Microsoft社のActiveDirectoryなどが代表的です。使用するものLDAPサーバActiveDirectoryが動作しているサーバを想定しています。https://github.com/sharkpp/fuel-ldapauthFuelPHPの認証ドライバSimpleAuthのログイン認証部分をLDAP用に書き換えたパッケージです。今回はセッションやユーザ権限の管理も行うためこちらのパッケージを利用します。--packages=ldapauth以下のようなテーブルができます。SimpleAuthドライバで利用するテーブルとの違いはpasswordカラムが無い点ですね。'LdapAuth',APPPATH/config/ldapauth.phpにLDAP認証情報を記述hostusernamepasswordbasedn最低限これらの項目が設定されていれば動作します。認証テーブル名、カラム名を変える場合はこのファイルを編集してください。ログイン失敗}これでLDAPを使ったログイン認証ができるようになりました。ActiveDiredtoryから取得するユーザ属性を増やしたいActiveDirectoryにはユーザ認証に必要なもの以外にもユーザの属性が登録されている場合が多いです。LDAPを使えばこれらのユーザ属性データも取得することができます。ActiveDirectoryと連携するならこれらの属性データも使いたいですよね。認証に関係のないデータは認証用テーブルのprofile_fieldsカラムに保存しましょう。fuel-ldapauthパッケージではfirstnameとlastnameのユーザ属性のみをprofile_fieldsに保存しているため、保存する属性を増やすにはパッケージを修正する必要があります。$user_info['displayname'];ユーザ権限の管理がしたいActiveDirectoryから部署や役職の属性が取得できたなら今度はその属性で権限の管理がしたくなるかと思います。fuel-ldapauthのグループドライバ、ACLドライバはSimpleAuthパッケージのドライバを利用しています。そのため、SimpleAuthと同じく認証用テーブルのgroupカラムでユーザのグループ設定が可能であり、グループごとのロールも設定できます。ユーザの属性データをgroupカラムと紐付ける処理を実装すればActiveDirectoryの属性による権限管理が可能となります。おわりに今回のブログでは、FuelPHPでLDAP認証を実現するためのfuel-ldapauthパッケージの導入方法について書かせていただきました。社内システム開発の際に参考にしていただければ嬉しいです。はじめまして、社会人3年目の博士です。参加してきました月別アーカイブスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。