Chuyển hướng người dùng dựa trên tên người dùng (LDAP)


7

Chúng tôi có cài đặt apache 2.2 với cấu hình này trên 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>

Nó hoạt động rất tốt với LDAP auth! Chúng tôi có ldap-utils, php5, apache2.2-common.

Câu hỏi:

Làm thế nào chúng ta có thể tạo một trang, ví dụ:

somedomain.com/selectorpage.html

chuyển hướng người dùng đã đăng nhập sang trang khác dựa trên tên người dùng của họ?

Vì vậy, nếu người dùng XY truy cập vào "selectorpage.html", thì nó sẽ được chuyển hướng ngay lập tức đến trang XY.html. Nếu người dùng AB truy cập vào "selectorpage.html", thì nó sẽ được chuyển hướng ngay lập tức đến trang AB.html. Hoặc có bất kỳ chuyển hướng apache cho điều này?


1
Chỉ có một ý tưởng, tôi chưa thử điều này: Đặt REMOTE_USERbiến thành người dùng đã đăng nhập ( AuthLDAPRemoteUserAttribution có thể trợ giúp), sau đó sử dụng mod_rewriteđể chuyển hướng: Sử dụng điều kiện RewriteCond %{REMOTE_USER} (.*)để lấy tên người dùng và chuyển hướng sử dụng quy tắc viết lại phản hồi sau rằng : RewriteRule .* /%1.html, trong đó% 1 sẽ được thay thế bằng tên người dùng.
Jost

Câu trả lời:


4

kết hợp bài đăng này với thông tin của bạn, Id đề nghị bạn sử dụng trang php, thay vì trang html thay cho trang chọn.html và sử dụng

$_SERVER['PHP_AUTH_USER']

bên trong selector_page.php với một trong hai:

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

hoặc tương tự

(bạn có thể cần thực hiện quy tắc mod_rewrite để thay đổi selectorpage.html thành selectorpage.php nếu đó là một liên kết bên ngoài và không thuộc quyền kiểm soát của bạn, nhưng sẽ tốt hơn nếu thay đổi liên kết để trỏ đến trang php nếu không)


Nếu bạn có 100 người dùng, bạn có cần thêm 100 url và trường hợp không?
Baha
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.