Apacheグループ認証にmod_lookup_identityを使用する

Apacheグループ認証にmod_lookup_identityを使用する

Active Directoryデータベースに対して一部のユーザーを認証する必要があり、mod_authnz_pamそのために使用したいと思います。mod_authnz_ldapユーザーは、自分が属するグループの制限に基づいて特定のフォルダにアクセスできます。

問題は、またはを使用してユーザーに権限を付与することが可能mod_authnz_pamですが(私の意図ではないグループファイルを指定しない限り)は可能ではないということです。グループ情報を検索し、それを環境変数に保存する機能を見つけました。Require valid-userRequire user <username>Require group <groupname>mod_lookup_identitymod_authnz_pam

私の質問は、ユーザー認証に設定されているこの環境変数をどのように使用して同じユーザーに権限を付与できるかということです。

編集:部分的に見つけました。このような環境変数を参照して、およびRequire env/またはを使用できます。今私の問題は私が苦労しているクラスの評価の順序です。次の構成を考慮すると:Require exprREMOTE_USER_GROUPShttpdRequire

<VirtualHost *:80>
DocumentRoot /var/www/sftp
ServerName mysite.com.br
ErrorLog logs/mysite.log
<Directory "/var/www/sftp">
    Options Indexes
    AuthType Basic
    AuthName "private area"
    AuthBasicProvider PAM
    AuthPAMService httpd-sssd-auth
    LookupUserGroups REMOTE_USER_GROUPS :
    Require valid-user
</Directory>
<Directory "/var/www/sftp/folder01">
    Options Indexes
LookupUserGroups REMOTE_USER_GROUPS :
    <RequireAll>
    Require valid-user
    Require expr reqenv('REMOTE_USER_GROUPS') =~ /group01/
    </RequireAll>
</Directory>

folder01サーバーのルートにログインすると、フォルダを視覚化できます。ところで、フォルダ自体にアクセスしようとすると、認証する機会さえ得られません。 403が私を倒した。 user01の有効なグループを含まない項目に正規表現を変更すると、フォルダをRequire expr視覚化できないため、これがうまくいくと100%確信しています。folder01

エラーログには以下が表示されます。[Fri Jul 29 18:49:51.817402 2016] [authz_core:error] [pid 9921] [client 10.221.1.187:32196] AH01630: client denied by server configuration: /var/www/sftp/user01

user01folder01ディレクティブをからに変更するとRequire exprアクセスできますRequire user user01

Require expr評価をしてみると、REMOTE_USER_GROUPSサーバールートにログインするとSETになっていましたが、フォルダにログインするとUNSETになり認証に失敗したことが確認されました。

編集2:全体が認証/承認された後にのみモード照会が呼び出されるLogLevelことを示すために追加されました。そのため、環境変数は私がログインした変数ではなく、次の変数(存在する場合)に設定されます。私はこれが終わりだと思います。debugDirectoryDirectoryOption Indexes

関連情報