web-dev-qa-db-fra.com

Rediriger les utilisateurs en fonction du nom d'utilisateur (LDAP)

Nous avons une installation d'Apache 2.2 avec cette configuration sur un Ubuntu 12.04:

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>

Cela fonctionne très bien avec l'authentification LDAP! Nous avons ldap-utils, php5, Apache2.2-common.

Question:

Comment pouvons-nous créer une page, alors par exemple:

somedomain.com/selectorpage.html

redirige l'utilisateur connecté vers une autre page en fonction de son nom d'utilisateur?

Donc, si l'utilisateur XY visite le "selectorpage.html", il sera immédiatement redirigé vers la page XY.html. Si l'utilisateur AB visite "selectorpage.html", il sera immédiatement redirigé vers la page AB.html. Ou existe-t-il des redirections Apache pour cela?

7
evachristine

combinant cet article avec vos informations, Id vous suggère d'utiliser une page php, au lieu d'une page html à la place du sélecteur page.html, et d'utiliser

$_SERVER['PHP_AUTH_USER']

dans le selector_page.php avec soit:

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");

ou similaire

(vous devrez peut-être faire une règle mod_rewrite pour changer le selectorpage.html en selectorpage.php si c'est un lien externe et pas sous votre contrôle, mais il serait préférable de changer le lien pour qu'il pointe vers la page php si ce n'est pas le cas)

4
Jonathan