Hm, could it be that setting environ['wsgi.url_scheme'] in BaseController 
is too late for repoze.who?

So that I would have to create a Middleware that is inserted above 
repoze.who in the request stack...

Am Donnerstag, 31. Mai 2012 23:07:13 UTC+2 schrieb Alessandro Molina:
>
> That is strange as repoze.who.friendlyform uses webob.path_url to 
> generate the redirect and req.path_url uses wsgi.url_scheme to create 
> the ending url. 
> So it should behave exactly like the other redirects. 
>
> Try to place a middleware around your application to print out the 
> value of req.path_url just before the redirect is built, it might be 
> helpful to understand what is happening. 
>
> On Thu, May 31, 2012 at 10:21 PM, Moritz Schlarb <[email protected]> 
> wrote: 
> > Sadly, the issue reappeared, out of nowhere... 
> > 
> > But not at the point where repoze.what-1.0.9 redirects you to the login 
> > page, but on the login_handler page from repoze.who-1.0.19 ... 
> > 
> > $ curl -v -d 'username=user&password=pass' 
> > https://sauce.zdv.uni-mainz.de:8088/login_handler 
> > 
> >> POST /login_handler HTTP/1.1 
> >> User-Agent: curl/7.24.0 (x86_64-pc-linux-gnu) libcurl/7.24.0 
> >> GnuTLS/2.12.18 zlib/1.2.5 
> >> Host: sauce.zdv.uni-mainz.de:8088 
> >> Accept: */* 
> >> Content-Length: 42 
> >> Content-Type: application/x-www-form-urlencoded 
> >> 
> > * upload completely sent off: 42 out of 42 bytes 
> > < HTTP/1.1 302 Found 
> > < Date: Thu, 31 May 2012 20:17:50 GMT 
> > < Server: PasteWSGIServer/0.5 Python/2.7.2+ 
> > < Location: http://sauce.zdv.uni-mainz.de:8088/post_login?__logins=0 
> > < Content-Length: 295 
> > < Content-Type: text/html; charset=UTF-8 
> > < Vary: Accept-Encoding 
> > < 
> > <html> 
> >  <head> 
> >   <title>302 Found</title> 
> >  </head> 
> >  <body> 
> >   <h1>302 Found</h1> 
> >   The resource was found at <a 
> > href="http://sauce.zdv.uni-mainz.de:8088/post_login?__logins=0";>
> http://sauce.zdv.uni-mainz.de:8088/post_login?__logins=0</a>; 
> > you should be redirected automatically. 
> > 
> > 
> >  </body> 
> > </html> 
> > 
> > I change nothing on the settings regarding the wsgi.url_scheme... 
> > 
> > Any ideas? 
> > 
> > Am Montag, 21. Mai 2012 23:34:09 UTC+2 schrieb Moritz Schlarb: 
> >> 
> >> Thanks, Alessandro, 
> >> 
> >> For future references, I'd like to add, that you have to tell the 
> proxying 
> >> Apache to set that header. 
> >> Therefore add the following line to the Apache proxy config: 
> >> 
> >> RequestHeader set X_URL_SCHEME https 
> >> 
> >> Then you can use 
> >> 
> >> environ['wsgi.url_scheme'] = environ.get('HTTP_X_URL_SCHEME',  'http') 
> >> 
> >> Cheers, 
> >> Moritz 
> >> 
> >> Am Montag, 21. Mai 2012 16:11:55 UTC+2 schrieb Alessandro Molina: 
> >>> 
> >>> The redirection is created using the protocol that has been used to 
> >>> fetch the request. 
> >>> As APACHE is probably fetching the answer from Paste using HTTP and 
> >>> not HTTPS you get the redirection as HTTP. 
> >>> 
> >>> You should add to your application a middleware that does something 
> like: 
> >>> 
> >>>       environ['wsgi.url_scheme'] = environ.get('HTTP_X_URL_SCHEME', 
> >>>  'http') 
> >>> or 
> >>>       if environ['HTTP_X_PROXY_HOST'].split(':')[1] == '443': 
> >>>         environ['wsgi.url_scheme'] = 'https' 
> >>> 
> >>> depending on which headers apache is setting on proxy. 
> >>> The point is that you have to detect if the original request was HTTPS 
> >>> or not and set url_scheme accordingly. 
> >>> 
> >>> On Mon, May 21, 2012 at 3:19 PM, Moritz Schlarb wrote: 
> >>> > I was sure I had already read something about that error, but I'm 
> >>> > unable to 
> >>> > find it... 
> >>> > 
> >>> > I wanted to deploy a development version of my application on 
> another 
> >>> > port 
> >>> > at the Apache proxy frontend. 
> >>> > 
> >>> > So I added a https-only VirtualHost on Port 8088 and configured the 
> >>> > ProxyPass directives accordingly. 
> >>> > It works, but on some point I get redirected to the login page and 
> then 
> >>> > the 
> >>> > protocol does not preserve the https. 
> >>> > 
> >>> > curl gives me this: 
> >>> > 
> >>> > $ curl -I https://sauce.zdv.uni-mainz.de:8088/events/eip12/lessons/2 
> >>> > HTTP/1.1 302 Found 
> >>> > Date: Mon, 21 May 2012 13:18:02 GMT 
> >>> > Server: PasteWSGIServer/0.5 Python/2.7.2+ 
> >>> > Content-Type: text/html; charset=UTF-8 
> >>> > Location: 
> >>> > 
> >>> > 
> http://sauce.zdv.uni-mainz.de:8088/login?came_from=http%3A%2F%2Fsauce.zdv.uni-mainz.de%3A8088%2Fevents%2Feip12%2Flessons%2F2
>  
> >>> > Set-Cookie: 
> >>> > 
> >>> > 
> webflash=%7B%22status%22%3A%20%22warning%22%2C%20%22message%22%3A%20%22You%20have%20no%20permission%20to%20manage%20Lessons%20for%20this%20Event%22%7D;
>  
>
> >>> > Path=/ 
> >>> > Vary: Accept-Encoding 
> >>> > 
> >>> > You see, the redirection goes to plain http. 
> >>> > (I've checked, the issue also occurs when I get redirected to the 
> login 
> >>> > page 
> >>> > on the normal instance, but since I do a redirection to the https 
> >>> > protocol 
> >>> > in Apache, it is not bad there.) 
> >>> > 
> >>> > How can I make repoze.who redirect to the correct protocol? 
> >>> > 
> >>> > Cheers, 
> >>> > Moritz 
> >>> > 
> >>> > -- 
> >>> > You received this message because you are subscribed to the Google 
> >>> > Groups 
> >>> > "TurboGears" group. 
> >>> > To view this discussion on the web visit 
> >>> > https://groups.google.com/d/msg/turbogears/-/x6RRuAtVH8oJ. 
> >>> > To post to this group, send email to [email protected]. 
> >>> > To unsubscribe from this group, send email to 
> >>> > [email protected]. 
> >>> > For more options, visit this group at 
> >>> > http://groups.google.com/group/turbogears?hl=en. 
> > 
> > -- 
> > You received this message because you are subscribed to the Google 
> Groups 
> > "TurboGears" group. 
> > To view this discussion on the web visit 
> > https://groups.google.com/d/msg/turbogears/-/Ic-IXyVz3wMJ. 
> > 
> > To post to this group, send email to [email protected]. 
> > To unsubscribe from this group, send email to 
> > [email protected]. 
> > For more options, visit this group at 
> > http://groups.google.com/group/turbogears?hl=en. 
>

-- 
You received this message because you are subscribed to the Google Groups 
"TurboGears" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/turbogears/-/zs4aKNwGRXcJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/turbogears?hl=en.

Reply via email to