Forum Moderators: phranque
##############################
# my config snip
<VirtualHost *:81>
ProxyVia On
RewriteEngine On
RewriteMap ur prg:/etc/apache2/urmap.pl
RewriteLog /etc/apache2/rewrite.log
RewriteLogLevel 9
<LocationMatch "^/" >
AuthType Basic
AuthBasicProvider ldap
AuthzLDAPAuthoritative Off
AuthName "foo"
AuthLDAPUrl "ldap://eaxmaple.com:389/OU=User,DC=example,DC=com?sAMAccountName,memberOf?sub?(objectcategory=user)"
AuthLDAPBindDN "CN=PAM,OU=Service Accounts,DC=example,DC=com"
AuthLDAPBindPassword foobar
Require valid-user
RewriteEngine On
#RewriteOptions inherit
RewriteCond %{ENV:AUTHENTICATE_SAMACCOUNTNAME} (.*)
RewriteRule .* - [E=uid:%1]
RewriteCond %{ENV:AUTHENTICATE_MEMBEROF} (.*)
# A few examples I've tried
#RewriteCond ${ur:%1} (.*)
#RewriteRule (.*) ${ur:%1} [C]
#RewriteRule (.*) - [E=u_r:%1]
#RewriteRule (.*) ${ur:%1} [E=u_r:%1]
RewriteRule (.*) - [E=u_r:%1]
RequestHeader set UserId %{uid}e
RequestHeader set StateRequestorIdentifier 16000
RequestHeader set StateGeneratedIdentifier %t
RequestHeader set RequestServer 10.10.10.65
RequestHeader set StateIdentifier "Example"
RequestHeader set Date %t
RequestHeader set UserRole %{u_r}e
</LocationMatch>
CustomLog /var/log/apache2/testproxyserver.log combined
ErrorLog /var/log/apache2/testproxyserver_error.log
LogLevel info
# This is where the request will be forwarded to, commented out for testing
# ProxyPass / https://www.foo.gov/
# ProxyPassReverse / https://www.foo.gov/
</VirtualHost>
##############################
#/etc/apache2/urmap.pl
#!/usr/bin/perl -073 -w
$| = 1;
while (<STDIN>) {
$data=$_;
$data=~ s/CN=//;
$data=~ s/,.*$//;
$data=~ s/^ //;
push (@UR,$data);
};
if ($data ne "") {
$user_role=join(",",@UR);
$user_role="$user_role\n";
print $user_role;
} else {
print "NULL";
};
##############################
# example AUTHENTICATE_MEMBEROF
CN=AA,OU=Security Groups,DC=foo,DC=example,DC=com; CN=AB,OU=Security Groups,DC=foo,DC=example,DC=com; CN=AC,OU=Distribution Groups,DC=foo,DC=example,DC=com; CN=AD,OU=Distribution Groups,DC=foo,DC=example,DC=com; CN=AE,OU=Security Groups,DC=foo,DC=example,DC=com
##############################
# an example of my current header
Host: foo:81
Connection: keep-alive
Cache-Control: max-age=0
Authorization: Basic dmF...........MjM=
Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.63 Safari/534.3
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
UserId: me
StateRequestorIdentifier: 16000
StateGeneratedIdentifier: t=1300211268173673
RequestServer: 10.10.10.10
StateIdentifier: Foo
Date: t=1300211268173673
UserRole: CN=AA,OU=Security Groups,DC=foo,DC=example,DC=com; CN=AB,OU=Security Groups,DC=foo,DC=example,DC=com; CN=AC,OU=Distribution Groups,DC=foo,DC=example,DC=com; CN=AD,OU=Distribution Groups,DC=foo,DC=example,DC=com; CN=AE,OU=Security Groups,DC=foo,DC=example,DC=com
##############################
# what they now expect my header to look like
<snip>
StateRequestorIdentifier: 16000
StateGeneratedIdentifier: t=1300211268173673
RequestServer: 10.10.10.10
StateIdentifier: Foo
Date: t=1300211268173673
UserRole: AA,AB,AC,AD,AD
RewriteRule ^test_ur1$ http://example.com/test_ur2?ur_returned=${ur:testvalue} [R=301,L]