2

Apache で LDAP 認証を使用しています。ここで、PHP でログインしているユーザーを取得する方法を知る必要があります。それは可能ですか?ユーザー名を保存するために PHP で認証を行う必要がありますか?

4

2 に答える 2

9

mod_authnz_ldapモジュールをアクティブにして、セクションを次のように構成する場合:

<Directory /var/www/yoursite/>
    AuthName "LDAP Secured"
    AuthType Basic
    AuthLDAPUrl "ldap://your.ldap.server:389/dc=example,dc=com?sAMAccountName"
    AuthLDAPBindDN "ADUser@ADDomain.local"
    AuthLDAPBindPassword "secret"
    AuthBasicProvider ldap
    AuthzLDAPAuthoritative off
    Require valid-user
</Directory>

次に、PHPコードで、次のようにログインに使用されたユーザーIDを取得できます。

<?php
    $userId = $_SERVER['AUTHENTICATE_SAMACCOUNTNAME'];
    echo "User ID: " . $userId;
<?

AuthLDAPUrlディレクティブで指定するLDAP属性は、この方法で取得できます(AUTHENTICATE_をプレフィックスとして付けてから、すべて大文字で属性名を追加します)。属性をコンマで区切ることで属性を追加できますが、認証に使用されるのは最初の属性のみです。詳細については、 http ://httpd.apache.org/docs/2.2/mod/mod_authnz_ldap.html#exposedおよびhttp://httpd.apache.org/docs/2.2/mod/mod_authnz_ldap.html#authldapurlを参照してください。

于 2010-02-10T19:46:02.280 に答える
7

mod_lsapと同じかどうかはわかりませんが、Apacheを使用して認証すると、ユーザー名とパスワードが$_SERVERのスーパーグローバルに保存されます。

$_SERVER['PHP_AUTH_USER']
$_SERVER['PHP_AUTH_PW']

http://ca.php.net/manual/en/reserved.variables.server.php

于 2010-02-10T18:51:30.537 に答える