PHPerだけが突破できる認証を実装可能なpam_phpを開発した
PHPカンファレンス福岡 2024の登壇に当たり、PHPのカンファレンスで話すのに、PHPの話が出てこないのはいかがなものか?と思ったので、PHPでLinuxの認証ができるpam_phpを開発しました。
どういったものかはリポジトリをcloneしてデモをお試しいただくと、docker環境で確認できます。下記は、PHPerだけが突破できる神がかった認証例です。
モジュールをインストール後、/etc/pam.d/
にある適切な設定ファイル (例: common-auth) に以下を追加して、pam-php モジュールを有効にします。
auth sufficient pam_php.so /path/to/your/script.php
このように定義すると、script.phpに定義してある、pam_authenticate($pamh): int
関数が実行されます。あとは認証成功時は0を返却、失敗時は0以外を返却するとLinuxの認証を制御できます。
実装の詳細としてはpamモジュールの中でPHPエンジンを起動して、スクリプトファイルを開き、指定のメソッドを実行しています。メモリの問題などありましたが、それは下記のスライドで触れています。
PAM結構便利で実用的なので是非試してみてください!