To clarify, I did lodge a bug report

https://issues.apache.org/bugzilla/show_bug.cgi?id=56038

A quick fix of the affected code did get SessionExclude working. The
behavior is that no session is loaded, so if SessionExclude is applied to a
location which requires authentication, the authentication requirement will
fail, so this is not a solution to preventing session refresh (unless
applied to a resource which doesn't require authentication.)


On Mon, Jan 20, 2014 at 10:49 AM, Erik Pearson <e...@adaptations.com> wrote:

> Okay, I take that back. Call me an Apache idiot.
> The SessionExclude directive did not work. I could not get it to work for
> any path prefix. I'm taking a closer look at mod_session.c to see how this
> should work. Strangely enough, and I dare barely suggest this, there
> appears to be a bug in mod_session regarding the application of
> SessionExclude unless there were also SessionIncludes. I'll pursue this as
> bug report.
>
>
>
> On Mon, Jan 20, 2014 at 8:10 AM, Erik Pearson <e...@adaptations.com>wrote:
>
>> Well, it looks like I've just answered one of my questions. The
>> "SessionExclude" directive "allows sessions to be disabled relative to URL
>> prefixes". I had not tried this because I don't want sessions to be
>> completely disabled. However, desperate, I tried it. It apparently does not
>> completely disable sessions -- they are still understood by mod_auth_form
>> -- but it does prevent sessions from being updated.
>>
>> The language in the docs is confusing, because it both uses words like
>> "disabled" or "valid" to describe the effect of SessionExclude and
>> SessionInclude, which implies to me that anything that depends on sessions
>> like mod_auth_form would not see a session. Yet the same sections also
>> mention session "maintenance", which implies the act of refreshing a
>> session expiry, max-age, and sessionheader through set-cookie.
>>
>> My testing shows that when SessionExclude is in effect, the mod_auth_form
>> does indeed still see the session -- session crypto even works -- on a url
>> that is excluded via SessionExclude -- and the expiry is not updated.
>>
>>
>> On Mon, Jan 20, 2014 at 7:23 AM, Erik Pearson <e...@adaptations.com>wrote:
>>
>>> Greetings Apache httpd community,
>>>
>>> I'm following up to myself, since I've had no response to the initial
>>> query. I'm hoping that someone with session experience can help!
>>>
>>> I am using Apache httpd 2.4.7 on ArchLinux, and have questions about
>>> mod_session usage. I'm using mod_auth_form and mod_session to provide
>>> authenticated access to specific urls. The basic configuration is fully
>>> functional. Authenticating through a hosted form works great, session
>>> cookies and session encryption works fine. I can access a protected
>>> resource by logging in, and logout either explicitly through a logout url
>>> or through session timeout. This is on a virtual host.
>>>
>>> But, alas, there are two problems remaining.
>>>
>>> First, I need to access the server under authentication but without
>>> updating the expiry of the session. I need this functionality for at least
>>> two reasons so far. For one, some pages engage in auto-refreshing via ajax
>>> calls. This auto refreshing should not necessarily keep the browser logged
>>> in. But since each ajax call refreshes the expiry, the effect is a
>>> permanent session as long as an auto-refreshing page is open.
>>>
>>> Second, I need the session cookie to have a "session" MaxAge -- that is,
>>> to be deleted when the browser is closed/reopened. However, mod_session
>>> always sets the cookie MaxAge to the same value as the expiry.
>>>
>>> I have found some but scant advice on this topic. It makes sense, but I
>>> can't get it to work. One fix I found for MaxAge is to use
>>>
>>> Header edit Set-Cookie ;Max-Age=XXX ;
>>>
>>> Where XXX is the max age value set in the conf file. I have this line
>>> placed below the primary session configuration:
>>>
>>> Session On
>>> SessionEnv On
>>> SessionCookieName session path=/
>>> SessionMaxAge 120
>>>
>>> Header edit Set-Cookie ;Max-Age=XXX ;
>>>
>>> Alas the Header edit line did nothing.
>>>
>>> I have not found any advice for disabling session cookie updating, but I
>>> figured that removing the response's Set-Cookie header field would
>>> effectively prevent the cookie's update. So I added the header line:
>>>
>>> Header unset Set-Cookie
>>>
>>> Alas, this does nothing either. I've tested the same line for removing
>>> cookie set with a "Header set Set-Cookie" which sets a test cookie, and
>>> then later removes it with unset, and this worked as expected.
>>>
>>> I am figuring that perhaps mod_header runs before mod_session injects
>>> the Set-Cookie header field. The document suggests that mod_header's late
>>> hook is in the fixup phase, which is before content. mod_session must
>>> inject the header after the content phase because it accepts a modification
>>> of the session cookie through, at least, through SessionHeader (I'm using
>>> scgi proxying).
>>>
>>> I am far far from knowing my way well around httpd module phases. I'm
>>> hoping someone with experience in this area can help set me straight.
>>>
>>>
>>>
>>>
>>> On Thu, Jan 16, 2014 at 10:54 AM, Erik Pearson <e...@adaptations.com>wrote:
>>>
>>>> Hi,
>>>> I've just started using Apache sessions in 2.4.7, in combination with
>>>> mod_auth_form. It is working great. It is fronting a web app running under
>>>> SCGI and that part is working fine as well.
>>>>  On a page that is protected by authentication I have ajax calls to
>>>> urls that are also under authentication. The page refreshes the data
>>>> periodically (via a timer that reruns the ajax, rerenders the display). An
>>>> untended side effect is that the session never expires, since the ajax
>>>> calls cause the session expiration to be refreshed. I need the ajax calls
>>>> to use the session for authentication, but not refresh the expiration time
>>>> (well, I may need to provide an option to let the user keep the session
>>>> alive, but by default I think it should eventually expire.) What I would
>>>> like to do is supply, say, an http header that would inhibit the refreshing
>>>> of the expiration time. I did not find such in the documentation, or the
>>>> question posted on the list.
>>>> My question is -- is there such an option that I may have missed, or
>>>> has any one accomplished this behavior through some other means?
>>>> I can work around it by using a separate timer on the page that will
>>>> automatically log the user out after a certain amount of time, but would
>>>> rather also have a method that works with the native httpd session.
>>>> Thanks,
>>>> Erik.
>>>>
>>>
>>>
>>>
>>> --
>>> Erik Pearson
>>> Adaptations
>>> ;; web form and function
>>>
>>
>>
>>
>> --
>> Erik Pearson
>> Adaptations
>> ;; web form and function
>>
>
>
>
> --
> Erik Pearson
> Adaptations
> ;; web form and function
>



-- 
Erik Pearson
Adaptations
;; web form and function

Reply via email to