Benutzer basierend auf dem Benutzernamen (LDAP) umleiten

7

Wir haben eine Apache 2.2-Installation mit dieser Konfiguration auf einem 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 emailAddress=someone@somewhere.com
        </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>

Es funktioniert hervorragend mit LDAP-Authentifizierung! Wir haben ldap-utils, php5, apache2.2-common.

Frage:

Wie können wir eine Seite erstellen, zum Beispiel:

somedomain.com/selectorpage.html

leitet den angemeldeten Benutzer basierend auf seinem Benutzernamen auf eine andere Seite weiter?

Wenn also ein XY-Benutzer die "selectorpage.html" besucht, wird diese sofort auf die Seite XY.html umgeleitet. Wenn ein AB-Benutzer die "selectorpage.html" besucht, wird diese sofort auf die Seite AB.html umgeleitet. Oder gibt es dafür Apache-Weiterleitungen?

Evachristin
quelle
1
Nur eine Idee, ich habe dies nicht versucht: Setzen Sie die REMOTE_USERVariable auf den angemeldeten Benutzer ( AuthLDAPRemoteUserAttribute könnte helfen) und verwenden Sie dann mod_rewritezum Umleiten: Verwenden Sie eine Bedingung RewriteCond %{REMOTE_USER} (.*), um den Benutzernamen abzurufen, und leiten Sie sie anschließend mithilfe einer Umschreibungsregel für die Rückreferenzierung um das : RewriteRule .* /%1.html, wobei% 1 durch den Benutzernamen ersetzt wird.
Jost

Antworten:

4

Wenn Sie diesen Beitrag mit Ihren Informationen kombinieren , empfehlen wir Ihnen, eine PHP-Seite anstelle einer HTML-Seite anstelle von Selector page.html zu verwenden und zu verwenden

$_SERVER['PHP_AUTH_USER']

in der selector_page.php mit entweder:

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

o.ä

(Möglicherweise müssen Sie eine mod_rewrite-Regel ausführen, um die selectorpage.html in selectorpage.php zu ändern, wenn es sich um einen externen Link handelt und nicht unter Ihrer Kontrolle steht. Es ist jedoch besser, den Link so zu ändern, dass er auf die PHP-Seite verweist, wenn dies nicht der Fall ist.)

Jonathan
quelle
Wenn Sie 100 Benutzer haben, müssen Sie 100 URLs und Fälle hinzufügen?
Baha