Search squid archive

RE: redirecting unauthenticated users

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> Hi Amos,
>
> Thanks very very much for your help. I'm not really trying to authenticate
> to an external web site, only Squid is involved.
>
> What I'm trying to do is:
>
> 1 http_access allow all
> # redirector program
> 2 http_access2 allow freesites
> 3 http_access2 allow AuthUsers
> 4 http_access2 deny all
>
> - User opens browser. (no auth yet)
> - Homepage tries to load, redirector sees no username => redirect to
> welcome
> page (+ link to google), allowed by acl 2
> - User clicks on the external link => not in acl 2, but allowed by acl 3
> =>
> Squid asks for auth
> - User enters user+pass in browser (proxy-auth), validated by Squid. Squid
> has now a valid username and password.
>
> So far, so good. This all works fine.
> - now every next page should pass the redirector as this
>
> Problem:
> Due to acl 1, Squid doesn't pass a username to the rewriter program and
> even
> after a succesfull auth, the redirector keeps redirecting to the welcome
> page due to the missing username.
> If I put acl 3 before the redirector, Squid nicely sends the username with
> the requested url.
>
>
> Can this be resolved?

Yes. By using the right settings in the right way.

 * Url-rewriter only needs URL. So that is all squid guarantees it.
 * Other details may or may not exist based on whether squid has any
reason to require their use beforehand.
 * http_access2 _after_ the re-writer is the first place squid needs the
login details. They are fetched at that point.


Drop the redirector and http_access2 entirely and use this:

 acl noAuth src all
 acl AuthUsers proxy_auth REQUIRED

 http_access allow freesites
 http_access allow AuthUsers
 deny_info http://login.mydomain.local/?referer=%s noAuth
 http_access deny !AuthUsers noAuth
 http_access deny all

What that does, is allow freesites and authenticated users through
immediately.
For non-authenticated users it redirects them to the login page at
http://login.mydomain.local/ with a query parameter 'referer' containing
the original URL requested.

Amos


> -----Original Message-----
> From: Amos Jeffries [mailto:squid3@xxxxxxxxxxxxx]
> Sent: Monday, April 27, 2009 02:58
> To: Philippe Boeij
> Cc: squid-users@xxxxxxxxxxxxxxx
> Subject: Re:  redirecting unauthenticated users
>
>>
>> Hi,
>>
>> I have a question. I'd like to have squid configured for the following:
>>
>> - User opens browser (with squid proxy configured) and gets redirected
>> to a login page
>> - The browser prompts asks for a proxy username/ password.
>> - if the user provided a good username/password, he/she can click on
>> an icon to get redirected to the original requested page.
>>
>> squid.conf (using version 2.7stable5) part:
>>
>> 	acl all src all
>> 	acl freesites dstdomain login.mydomain.local
>> 	acl AuthUsers proxy_auth REQUIRED
>>
>> 	http_access allow all
>> 	#     process redirector program between http_access and
>> http_access2,
>> 	#     result depends on the fact if a username exists.
>> 	http_access2 allow freesites
>> 	http_access2 allow AuthUsers
>> 	http_access2 deny all
>>
>> Problem is that this way the redirector program never gets any
>> username passed although the user is asked for a user/pass.
>>
>> This works partially (username gets passed):
>>
>> 	http_access allow AuthUsers
>> 	# -> process redirector program between http_access and http_access2
>> 	http_access2 allow all
>>
>> But now I can't redirect to a nice welcome page before the
>> username/password prompt...
>>
>>
>> Please someone help.
>>
>> Many thanks.
>>
>> Philippe
>>
>
> You have a conceptual problem here.
>
> What you are attempting to do is get the browser to authenticate against
> the
> proxy by sending authentication details to a web server somewhere else.
>
> What you need instead is one of two captive portal solutions:
>
>  1) authenticate against the proxy directly, no fuss.
>
>   http_access allow freesites
>   http_access deny !AuthUsers
>   http_access deny all
>
>
>  2) use an external_acl_type helper to perform side-band authentication
> based on IP using details gathered from the website login.
>
>   external_acl_type foo ...
>   acl AuthsUsers external foo
>
>   http_access allow freesites
>   http_access allow AuthUsers
>   deny_info http://login.mydomain.local all
>   http_access deny all
>
>
> (2) has cons in that it assumes you are able to create a working auth
> scheme
> where experts often fail. Also that every visitor has a unique IP/headers
> (no sharing, no NAT) and forgery is ignored.
>
> Amos
>
>
>



[Index of Archives]     [Linux Audio Users]     [Samba]     [Big List of Linux Books]     [Linux USB]     [Yosemite News]

  Powered by Linux