web-dev-qa-db-ja.com

ユーザー名に基づいてユーザーをリダイレクト(LDAP)

Ubuntu 12.04でこの設定を使用してApache 2.2をインストールします。

cat /etc/Apache2/sites-enabled/000-default
<VirtualHost *:443>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www
        <Directory />
            AuthType Basic
            AuthName "Please provide USERNAME AND PASSWORD!"
            AuthBasicProvider ldap
            Order allow,deny
            Allow from all
            AuthLDAPURL "ldap://foo.com/c=uk,ou=bar,o=foo.com?mail"
            Require valid-user
            Require ldap-attribute dept=4F4623
            Require ldap-attribute [email protected]
        </Directory>

    ErrorLog ${Apache_LOG_DIR}/error.log
    LogLevel info
    CustomLog ${Apache_LOG_DIR}/access.log combined
    Alias /doc/ "/usr/share/doc/"
        <Directory "/usr/share/doc/">
            Options Indexes MultiViews FollowSymLinks
            AllowOverride None
            Order deny,allow
            Deny from all
            Allow from 127.0.0.0/255.0.0.0 ::1/128
        </Directory>
    SSLEngine on
    SSLCertificateFile /etc/Apache2/ssl/Apache.crt
    SSLCertificateKeyFile /etc/Apache2/ssl/Apache.key
</VirtualHost>

LDAP認証でうまく機能しています! ldap-utils、php5、Apache2.2-commonがあります。

質問:

どのようにしてページを作成できますか?

somedomain.com/selectorpage.html

ログインしているユーザーをユーザー名に基づいて別のページにリダイレクトしますか?

したがって、XYユーザーが「selectorpage.html」にアクセスすると、すぐにページXY.htmlにリダイレクトされます。 ABユーザーが「selectorpage.html」にアクセスすると、すぐにページAB.htmlにリダイレクトされます。または、これにApacheリダイレクトがありますか?

7
evachristine

この投稿 と情報を組み合わせて、セレクターpage.htmlの代わりにhtmlページの代わりにphpページを使用することをお勧めします。

$_SERVER['PHP_AUTH_USER']

selector_page.php内で次のいずれかを使用します。

switch($_SERVER['PHP_AUTH_USER']){
    case "user_a":
        $url = "xy.html";
        break;
    ......
    case "user_n":
        $url = "nn.html";
        break;
    default:
        $url = "ab.html";
        break;
}
header("location: $url");

または類似

(外部リンクであり、あなたの制御下にない場合、selectorpage.htmlをselectorpage.phpに変更するためにmod_rewriteルールを行う必要があるかもしれませんが、そうでない場合はphpページを指すようにリンクを変更する方が良いでしょう)

4
Jonathan