[ 
https://issues.apache.org/jira/browse/SLING-1116?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12828164#action_12828164
 ] 

Mike Moulton commented on SLING-1116:
-------------------------------------

For security reasons, I personally would like to see the cookie value be an 
HMAC [1] as opposed to a plain MD5 / SHA1 hash. I found an article [2] over at 
benlog.com that summarized this issue pretty well.

Here is an example taking what you outlined above, running it through an HMAC 
algorithm.

KEY = // a secret key either generated at startup (cookie is only good for that 
execution of the JVM) or stored across executions
MESSAGE = username : realm : cryptedPassword : 
HttpServletRequest.getRemoteAddress() : AuthenticationHandler.PATH_PROPERTY
authHash = HMAC(KEY, MESSAGE) // where HMAC could use MD5 or SHA1 underneath.

For an example of the above in Java, see [3].

[1] http://en.wikipedia.org/wiki/HMAC
[2] http://benlog.com/articles/2008/06/19/dont-hash-secrets/
[3] 
http://java.sun.com/j2se/1.4.2/docs/guide/security/jce/JCERefGuide.html#HmacEx

> FORM Based Authentication
> -------------------------
>
>                 Key: SLING-1116
>                 URL: https://issues.apache.org/jira/browse/SLING-1116
>             Project: Sling
>          Issue Type: New Feature
>          Components: Extensions
>            Reporter: Eric Norman
>            Assignee: Felix Meschberger
>         Attachments: org.apache.sling.cookieauth.zip, 
> org.apache.sling.sessionauth.zip, SLING_1116_jackrabbit_server_patch.txt, 
> updated_org.apache.sling.cookieauth.zip
>
>
> This is a new bundle that provides an implementation of forms based 
> authentication for sling.
> The login/logout servlets from the org.apache.sling.commons.auth are used.
> The AuthenticationHandler will use http basic auth credentials if they are on 
> the request, otherwise it will use the user/pwd posted from the login form.
> The login form html is generated by a set of scripts
> 1. login.html.esp     - full login page (includes login_body.html.esp for the 
> form markup)
> 2. login_body.html.esp   - just the login form, which may be useful for 
> drawing the login form for an ajax context
> 3. loginError.html.esp   - full login-error page
> 4. loginError_body.html.esp  - just the login-error form, for login error in 
> ajax context
> The above scripts are included as bundle-resources @ 
> /libs/sling/servlet/default
> The bundle also has a couple of test scripts to show some examples of usage:
> 1. loginTest.html.esp  - shows who is logged in and links to login or logout
> 2. loginTest2.html.esp - shows how a script can check permissions and show a 
> login page if the anonymous user doesn't have permission to see the page,
> Some examples of usage are:
> 1. http://host:port/path/to/node.login.html   - show the login page and then 
> goto http://host:port/path/to/node after  authenticated
> 2. http://host:port/path/to/node.login.html?s=.edit.html   - show the login 
> page and then goto http://host:port/path/to/node.edit.html after  
> authenticated
> 3. http://host:port/system/sling/logout  - invalidate the session and switch 
> back to anonymous user

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to