Ignore:
Timestamp:
Nov 4, 2011, 2:57:26 PM (12 years ago)
Author:
work@…
Message:

shibboleth changes - in development...

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/controllers/dbnp/authentication/LoginController.groovy

    r2080 r2081  
    5858                        }
    5959                        return
    60                 } else if (request.getHeaderNames().find{ it.toLowerCase() == 'useShibboleth' }) {
     60                } else if (request.getHeaderNames().find{ it.toLowerCase() == 'useShibboleth'.toLowerCase() }) {
    6161                        // authenticated through shibboleth?
    6262                        if (request.getHeaderNames().find{ it.toLowerCase() == 'persistent-id'.toLowerCase() }) {
    6363                                // get shibboleth data
    64                                 def shibPersistentId    = request.getHeader("persistent-id")
     64                                // note: sometimes apache makes the request headers lowercase, sometimes
     65                                //               it doesn't. To make sure it always works we use a case insensitive
     66                                //               finder to find the request header name
     67                                def shibPersistentId    = request.getHeader(request.getHeaderNames().find{ it.toLowerCase() == 'persistent-id'.toLowerCase() })
    6568                                def shibUid                             = request.getHeader("uid")
    66                                 def shibEmail                   = request.getHeader("Shib-InetOrgPerson-mail")
    67                                 def shibOrganization    = request.getHeader("schacHomeOrganization")
    68                                 def shibDisplayName             = request.getHeader("displayName")
     69                                def shibEmail                   = request.getHeader(request.getHeaderNames().find{ it.toLowerCase() == 'Shib-InetOrgPerson-mail'.toLowerCase() })
     70                                def shibOrganization    = request.getHeader(request.getHeaderNames().find{ it.toLowerCase() == 'schacHomeOrganization'.toLowerCase() })
     71                                def shibDisplayName             = request.getHeader(request.getHeaderNames().find{ it.toLowerCase() == 'displayName'.toLowerCase() })
    6972
    7073                                // does a user exist with this username?
     
    7477                                        user = new SecUser()
    7578                                        user.username           = shibPersistentId
     79                                        user.password           = springSecurityService.encodePassword("myDummyPassword", shibPersistentId)
     80                                        user.email                      = shibEmail
     81                                        user.displayName        = shibDisplayName
     82                                        user.organization       = shibOrganization
     83                                        user.uid                        = shibUid
     84                                        user.shibbolethUser     = true
    7685                                        user.enabled            = true
    7786                                        user.userConfirmed      = true
     
    7988                                        user.accountExpired     = false
    8089                                        user.accountLocked      = false
    81                                         user.save()
    82 
    83                                         // refresh user
    84                                         user.refresh()
     90                                        user.save(failOnError:true)
    8591                                }
    8692
    8793                                // login user
    88                                 //user.
    89 
    90                         }
     94                                springSecurityService.reauthenticate(user.username, user.password)
     95
     96                                // redirect user
     97                                if (params.returnURI) {
     98                                        // see basefilters
     99                                        redirect uri: params.returnURI
     100                                } else {
     101                                        redirect uri: config.successHandler.defaultTargetUrl
     102                                }
     103                        }
     104                } else {
     105                        println "nope..."
    91106                }
    92107
Note: See TracChangeset for help on using the changeset viewer.