Return-Path: Delivered-To: apmail-httpd-users-archive@www.apache.org Received: (qmail 84380 invoked from network); 24 Feb 2006 22:56:47 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 24 Feb 2006 22:56:47 -0000 Received: (qmail 22349 invoked by uid 500); 24 Feb 2006 22:56:35 -0000 Delivered-To: apmail-httpd-users-archive@httpd.apache.org Received: (qmail 22335 invoked by uid 500); 24 Feb 2006 22:56:35 -0000 Mailing-List: contact users-help@httpd.apache.org; run by ezmlm Precedence: bulk Reply-To: users@httpd.apache.org list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list users@httpd.apache.org Received: (qmail 22324 invoked by uid 99); 24 Feb 2006 22:56:35 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 24 Feb 2006 14:56:35 -0800 X-ASF-Spam-Status: No, hits=0.0 required=10.0 tests=HTML_MESSAGE X-Spam-Check-By: apache.org Received-SPF: neutral (asf.osuosl.org: local policy) Received: from [81.169.145.166] (HELO natnoddy.rzone.de) (81.169.145.166) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 24 Feb 2006 14:56:34 -0800 Received: from [80.171.131.45] (d131045.adsl.hansenet.de [80.171.131.45]) (authenticated bits=0) by post.webmailer.de (8.13.1/8.13.1) with ESMTP id k1OMuApP009070 for ; Fri, 24 Feb 2006 23:56:11 +0100 (MET) Message-ID: <43FF8FA1.7070502@hayo.de> Date: Fri, 24 Feb 2006 23:58:41 +0100 From: Hayo Schmidt User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.7.12) Gecko/20050915 X-Accept-Language: de, de-at, en, en-us MIME-Version: 1.0 To: users@httpd.apache.org References: In-Reply-To: Content-Type: multipart/alternative; boundary="------------020400040503060103060105" X-Virus-Checked: Checked by ClamAV on apache.org Subject: Re: [users@httpd] Authorization header without password for basic authentication on a reverse proxy X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N --------------020400040503060103060105 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Thanks a lot to all who helped me. Here is the solution i found with your support: # Set up reverse proxy # needs: mod_proxy ProxyRequests Off ProxyPass /folder http://backend-server ProxyPassReverse /folder http://backend-server # # Configuration of access protection. # # needs: mod_ldap,mod_auth,mod_auth_ldap Order deny,allow Allow from all ## Auth LDAP Configuration (example) AuthLDAPURL ldap://ldaphost:389/CN=Users,DC=DOMAIN,DC=local?sAMAccountName?sub?(objectClass=user) AuthLDAPBindDN cn=Administrator,cn=Users,dc=DOMAIN,dc=local AuthLDAPBindPassword secret Require valid-user AuthType Basic AuthName "Extranet Login" #*** Pass the User without Password *** # needs: mod_headers; mod_rewrite # remove authorization header (username:password) RequestHeader unset authorization # configure user id format # Distinguished Name [On]; UserID (sAMAccountName) [Off] AuthLDAPRemoteUserIsDN Off #the following does not work, passed user is always 'null' #RequestHeader set authorization %{REMOTE_USER}e # -> Workaround with rewrite RewriteEngine On RewriteCond %{REMOTE_USER} (.*) RewriteRule .* - [E=R_U:%1] RequestHeader add X-Remote-User %{R_U}e The user authenticates against a Microsoft Active Directory when he accesses the /folder through the reverse proxy. The authorization header set by the browser is removed. Instead either the Windows login name (sAMAccountName) or the Distinguished Name of the user is passed to the backend server as clear text in X-Remote-User request header. I am not sure if the solution always works with special characters (like �, �, � ). You will have to test that in your environment. Does someone know a failsafe solution to that, like base64 encoding the X-Remote-User in Apache? Regards, Hayo Schmidt Boyle Owen schrieb: >>-----Original Message----- >>From: Hayo Schmidt [mailto:strato@hayo.de] >>Sent: Donnerstag, 9. Februar 2006 12:16 >>To: users@httpd.apache.org >>Subject: [users@httpd] Authorization header without password >>for basic authentication on a reverse proxy >> >>I have set up a reverse proxy (mod_proxy) on Apache 2.0.53 on >>SuSE Linux >>9.3. The reverse proxy successfully handles basic authentication and >>then forwards to the protected web server. The authentication >>is handled >>by mod_auth_ldap against a M$ Active Directory Server. >> >>The user and password are transferred by standard apache >>functionality >>in a http request header parameter called 'authorization'. >>The value of >>the parameter looks something like this: 'Basic >>WErwSrweW4Dsaf3_'. The >>first means basic authentication, the latter is >>':' in >>a Base64-encoded format. I trust the authentication on Apache >>and would >>like to remove this unencrypted password, so that only the userid is >>transferred to the web server. It is a security issue not to disclose >>the password to anyone behind the reverse proxy. >> >>Is there any configuration where this can be set? >> >> > >It is the browser that forms the "Authorization" header. The apache proxy simply forwards the header (along with all the other headers in the request) to the backend server. > >If you don't want to pass this header in the proxy-backend network, you could protect the realm in the proxy and have it open in the backend; eg: > >In proxy: > > > Auth directives > Require valid-user > > >ProxyPass /path/to/realm http://backend-server >ProxyPassReverse /path/to/realm http://backend-server > >In backend: > >- remove Auth directives > > >Rgds, >Owen Boyle >Disclaimer: Any disclaimer attached to this message may be ignored. > > > > >>In case it cannot be configured: Which module of apache >>handles setting >>the authorization header? I did not find anything in the 2.0 sources >>(mod_proxy.c; mod_proxy_util.c; >>mod_proxy_http.c;mod_auth_ldap.c....). >>Are there useful changes with Apache 2.2? >> >>Hayo Schmidt >> >>--------------------------------------------------------------------- >>The official User-To-User support forum of the Apache HTTP >>Server Project. >>See for more info. >>To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org >> " from the digest: users-digest-unsubscribe@httpd.apache.org >>For additional commands, e-mail: users-help@httpd.apache.org >> >> >> >> >Diese E-mail ist eine private und pers�nliche Kommunikation. Sie hat keinen Bezug zur B�rsen- bzw. Gesch�ftst�tigkeit der SWX Gruppe. This e-mail is of a private and personal nature. It is not related to the exchange or business activities of the SWX Group. Le pr�sent e-mail est un message priv� et personnel, sans rapport avec l'activit� boursi�re du Groupe SWX. > > >This message is for the named person's use only. It may contain confidential, proprietary or legally privileged information. No confidentiality or privilege is waived or lost by any mistransmission. If you receive this message in error, please notify the sender urgently and then immediately delete the message and any copies of it from your system. Please also immediately destroy any hardcopies of the message. You must not, directly or indirectly, use, disclose, distribute, print, or copy any part of this message if you are not the intended recipient. The sender's company reserves the right to monitor all e-mail communications through their networks. Any views expressed in this message are those of the individual sender, except where the message states otherwise and the sender is authorised to state them to be the views of the sender's company. > >--------------------------------------------------------------------- >The official User-To-User support forum of the Apache HTTP Server Project. >See for more info. >To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org > " from the digest: users-digest-unsubscribe@httpd.apache.org >For additional commands, e-mail: users-help@httpd.apache.org > > > > --------------020400040503060103060105 Content-Type: text/html; charset=us-ascii Content-Transfer-Encoding: 7bit Thanks a lot to all who helped me.

Here is the solution i found with your support:       
    # Set up reverse proxy
    # needs: mod_proxy
    ProxyRequests Off
    ProxyPass /folder http://backend-server
    ProxyPassReverse /folder http://backend-server
    #
    # Configuration of access protection.
    #
    <Location /folder>
        # needs: mod_ldap,mod_auth,mod_auth_ldap
        Order deny,allow
        Allow from all
        ## Auth LDAP Configuration (example)
        AuthLDAPURL ldap://ldaphost:389/CN=Users,DC=DOMAIN,DC=local?sAMAccountName?sub?(objectClass=user)
        AuthLDAPBindDN cn=Administrator,cn=Users,dc=DOMAIN,dc=local
        AuthLDAPBindPassword secret
        Require valid-user
        AuthType Basic
        AuthName "Extranet Login"

        #*** Pass the User without Password ***
        # needs: mod_headers; mod_rewrite

        # remove authorization header (username:password)
        RequestHeader unset authorization

        # configure user id format
        # Distinguished Name [On]; UserID (sAMAccountName) [Off]
        AuthLDAPRemoteUserIsDN Off

        #the following does not work, passed user is always 'null'
        #RequestHeader set authorization %{REMOTE_USER}e
        # -> Workaround with rewrite
        RewriteEngine On
        RewriteCond %{REMOTE_USER} (.*)
        RewriteRule .* - [E=R_U:%1]
        RequestHeader add X-Remote-User %{R_U}e
    </Location>

The user authenticates against a Microsoft Active Directory when he accesses the /folder through the reverse proxy.
The authorization header set by the browser is removed.
Instead either the Windows login name (sAMAccountName) or the Distinguished Name of the user is passed to the backend server as clear text in X-Remote-User request header.

I am not sure if the solution always works with special characters (like ä,  ö, é ). You will have to test that in your environment.
Does someone know a failsafe solution to that, like base64 encoding the X-Remote-User in Apache?

Regards,
Hayo Schmidt

Boyle Owen schrieb:
-----Original Message-----
From: Hayo Schmidt [mailto:strato@hayo.de] 
Sent: Donnerstag, 9. Februar 2006 12:16
To: users@httpd.apache.org
Subject: [users@httpd] Authorization header without password 
for basic authentication on a reverse proxy 

I have set up a reverse proxy (mod_proxy) on Apache 2.0.53 on 
SuSE Linux 
9.3. The reverse proxy successfully handles basic authentication and 
then forwards to the protected web server. The authentication 
is handled 
by mod_auth_ldap against a M$ Active Directory Server.

The user and password are transferred by standard apache 
functionality 
in a http request header parameter called 'authorization'. 
The value of 
the parameter looks something like this:  'Basic 
WErwSrweW4Dsaf3_'. The 
first means basic authentication, the latter is 
'<userid>:<password>' in 
a Base64-encoded format. I trust the authentication on Apache 
and would 
like to remove this unencrypted password, so that only the userid is 
transferred to the web server. It is a security issue not to disclose 
the password to anyone behind the reverse proxy.

Is there any configuration where this can be set?
    

It is the browser that forms the "Authorization" header. The apache proxy simply forwards the header (along with all the other headers in the request) to the backend server. 

If you don't want to pass this header in the proxy-backend network, you could protect the realm in the proxy and have it open in the backend; eg:

In proxy:

<Location /path/to/realm>
  Auth directives
  Require valid-user
</Location>

ProxyPass /path/to/realm http://backend-server
ProxyPassReverse /path/to/realm http://backend-server

In backend:

- remove Auth directives


Rgds,
Owen Boyle
Disclaimer: Any disclaimer attached to this message may be ignored. 


  
In case it cannot be configured: Which module of apache 
handles setting 
the authorization header? I did not find anything in the 2.0 sources 
(mod_proxy.c; mod_proxy_util.c; 
mod_proxy_http.c;mod_auth_ldap.c....). 
Are there useful changes with Apache 2.2?

Hayo Schmidt

---------------------------------------------------------------------
The official User-To-User support forum of the Apache HTTP 
Server Project.
See <URL:http://httpd.apache.org/userslist.html> for more info.
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
   "   from the digest: users-digest-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org


    
Diese E-mail ist eine private und persönliche Kommunikation. Sie hat keinen Bezug zur Börsen- bzw. Geschäftstätigkeit der SWX Gruppe. This e-mail is of a private and personal nature. It is not related to the exchange or business activities of the SWX Group. Le présent e-mail est un message privé et personnel, sans rapport avec l'activité boursière du Groupe SWX.
 
 
This message is for the named person's use only. It may contain confidential, proprietary or legally privileged information. No confidentiality or privilege is waived or lost by any mistransmission. If you receive this message in error, please notify the sender urgently and then immediately delete the message and any copies of it from your system. Please also immediately destroy any hardcopies of the message. You must not, directly or indirectly, use, disclose, distribute, print, or copy any part of this message if you are not the intended recipient. The sender's company reserves the right to monitor all e-mail communications through their networks. Any views expressed in this message are those of the individual sender, except where the message states otherwise and the sender is authorised to state them to be the views of the sender's company.

---------------------------------------------------------------------
The official User-To-User support forum of the Apache HTTP Server Project.
See <URL:http://httpd.apache.org/userslist.html> for more info.
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
   "   from the digest: users-digest-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org


  

--------------020400040503060103060105--