Hola Ladies and Gents,
Below is a patch to squid-head-200201020000 which implements
"Username Headers." The basic idea here is to specify a list of domain
names which will receive a Proxy-Authenticated username. This is useful in
my company as a unified logon, and may be useful to others as well.
This feature adds one configuration option which is a list of domain
suffixes to try to match against. By default the list is empty, and thus
adds almost no overhead for folks who do not want this feature.
If a list of domain names are present, the patch attempts to match the
requested web page with any of the domains. If successful it will add an
HTTP header like this:
HTTP_X_PROXY_USERNAME: bherrick
This is, of course, not even close to a secure way to authenticate users.
However, in a small controlled intranet environment, it gives a useful
hint for web scripts.
Questions, comments and concerns are of course welcome. Please CC me on
any traffic concerning this patch as I am not subscribed to the list.
--
Ben Herrick
System Administrator
Globalcom, Inc.
333 West Wacker Drive Suite 1500
Chicago, Il 60606-1231
Phone: 312.893.0176
Pager: 800.205.7564
Fax: 312.492.1414
Service: 800.589.1531
mailto:bherrick@global-com.com
============== CUT HERE ==============
--- squid-head-200201020000/src/HttpHeader.c Wed Jan 2 16:00:32 2002
+++ squid-head-200201020000/src/HttpHeader.c.gc Wed Jan 2 16:02:07 2002
@@ -122,6 +122,7 @@
{"X-Cache", HDR_X_CACHE, ftStr},
{"X-Cache-Lookup", HDR_X_CACHE_LOOKUP, ftStr},
{"X-Forwarded-For", HDR_X_FORWARDED_FOR, ftStr},
+ {"X-Proxy-Username", HDR_X_PROXY_USERNAME, ftStr},
{"X-Request-URI", HDR_X_REQUEST_URI, ftStr},
{"X-Squid-Error", HDR_X_SQUID_ERROR, ftStr},
{"Negotiate", HDR_NEGOTIATE, ftStr},
@@ -207,7 +208,7 @@
HDR_IF_MATCH, HDR_IF_MODIFIED_SINCE, HDR_IF_NONE_MATCH,
HDR_IF_RANGE, HDR_MAX_FORWARDS, HDR_PROXY_CONNECTION,
HDR_PROXY_AUTHORIZATION, HDR_RANGE, HDR_REFERER, HDR_REQUEST_RANGE,
- HDR_USER_AGENT, HDR_X_FORWARDED_FOR
+ HDR_USER_AGENT, HDR_X_FORWARDED_FOR, HDR_X_PROXY_USERNAME
};
/* header accounting */
--- squid-head-200201020000/src/cf.data.pre Mon Dec 24 23:46:35 2001
+++ squid-head-200201020000/src/cf.data.pre.gc Wed Jan 2 16:12:55 2002
@@ -2466,6 +2466,20 @@
DOC_END
+NAME: username_header
+TYPE: wordlist
+LOC: Config.usernameHeader
+DEFAULT: none
+DOC_START
+ Appends an X-PROXY-USERNAME to the list of headers sent to
+ the upstream webserver. The argument is a list of one or more
+ domain names which should receive username information.
+
+Example
+ username_header yourdomain.com affiliatedomain.com
+DOC_END
+
+
NAME: append_domain
TYPE: string
LOC: Config.appendDomain
--- squid-head-200201020000/src/enums.h Fri Dec 21 03:47:34 2001
+++ squid-head-200201020000/src/enums.h.gc Wed Jan 2 16:06:02 2002
@@ -237,6 +237,7 @@
HDR_X_CACHE,
HDR_X_CACHE_LOOKUP, /* tmp hack, remove later */
HDR_X_FORWARDED_FOR,
+ HDR_X_PROXY_USERNAME,
HDR_X_REQUEST_URI, /* appended if ADD_X_REQUEST_URI is #defined */
HDR_X_SQUID_ERROR,
HDR_NEGOTIATE,
--- squid-head-200201020000/src/http.c Thu Dec 27 20:39:42 2001
+++ squid-head-200201020000/src/http.c.gc Wed Jan 2 16:42:02 2002
@@ -732,6 +732,7 @@
const HttpHeader *hdr_in = &orig_request->header;
int we_do_ranges;
const HttpHeaderEntry *e;
+ wordlist *w = NULL;
String strVia;
String strFwd;
HttpHeaderPos pos = HttpHeaderInitPos;
@@ -836,6 +837,18 @@
default:
/* pass on all other header fields */
httpHeaderAddEntry(hdr_out, httpHeaderEntryClone(e));
+ }
+ }
+
+ /* append X-Proxy-Username */
+ if ((w = Config.usernameHeader) != NULL) {
+ if (!httpHeaderHas(hdr_out, HDR_X_PROXY_USERNAME) && request->user_ident) {
+ for (; w; w = w->next) {
+ if (strstr(request->host, w->key) != NULL) {
+ httpHeaderPutStr(hdr_out, HDR_X_PROXY_USERNAME, request->user_ident);
+ break;
+ }
+ }
}
}
--- squid-head-200201020000/src/structs.h Wed Jan 2 16:15:00 2002
+++ squid-head-200201020000/src/structs.h.gc Wed Jan 2 16:14:49 2002
@@ -489,6 +489,7 @@
char *host;
u_short port;
} Accel;
+ wordlist *usernameHeader;
char *appendDomain;
size_t appendDomainLen;
char *debugOptions;
============== CUT HERE ==============
Received on Wed Jan 02 2002 - 19:33:33 MST
This archive was generated by hypermail pre-2.1.9 : Tue Dec 09 2003 - 16:14:44 MST