web-dev-qa-db-ja.com

システムアカウントを介してApacheで認証する

現在、htpasswdから作成されたパスワードファイルを使用して認証するApacheサーバーがあります。そのように構成されています:

AuthType Basic
AuthName "Secured Site"
AuthUserFile "/etc/Apache2/users.passwd"

これを変更してローカルシステムアカウントを介して認証し、さらに指定したグループのローカルシステムアカウントのサブセットのみに制限するにはどうすればよいですか?

7
Mark Roddy

David Zによって提案されているように、mod-authnz-externalを使用できます。たとえば、 pwauth で使用します。

Debianまたはその派生物を実行している場合:

apt-get install libapache2-mod-authnz-external pwauth
a2enmod authnz_external

構成に追加

<IfModule mod_authnz_external.c>
  AddExternalAuth pwauth /usr/sbin/pwauth
  SetExternalAuthMethod pwauth pipe
</IfModule>

そして、ディレクトリセクションまたは.htaccessファイル:

    AuthType Basic
    AuthName "Login"
    AuthBasicProvider external
    AuthExternal pwauth
    Require valid-user
    # or
    # Require user jules jim ...

最後に、Apache2ctl restartまたはservice Apache2 reloadを使用して構成を再ロードします。

このドキュメント も参照してください。

7
mivk

mod_auth_pam のようなものを調べたいと思うかもしれません。 PAMは「PluggableAuthenticationModule」システムであり、標準のLinux(これはLinuxだと思います)システムのログインメカニズムは、PAMに依存して認証を行います。

別のオプションは mod_authnz_external で、これは/etc/shadowファイルを直接参照してアカウントを認証します。

[〜#〜]編集[〜#〜]:どうやらmod_auth_pamは(残念ながら)もはやメンテナンスされていないため、おそらくmod_authnz_externalより良い賭けだろう...

3
David Z

Apacheモジュール mod_auth_pam はまさにこれを行います。モジュールを有効にすると、構成ファイルは次のようになります。

AuthType Basic
AuthName "secure area"
require group staff
require user webmaster

そして、あなたはすべて準備ができています。

2
towo