[ 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.