120 def authenticate(self, configurationAttributes, requestParameters, step):
121 identity = CdiUtil.bean(Identity)
122 credentials = identity.getCredentials()
124 userService = CdiUtil.bean(UserService)
125 requestParameterService = CdiUtil.bean(RequestParameterService)
126 authenticationService = CdiUtil.bean(AuthenticationService)
127 httpService = CdiUtil.bean(HttpService)
130 print "CAS2. Authenticate for step 1" 131 ticket_array = requestParameters.get(
"ticket")
132 if ArrayHelper.isEmpty(ticket_array):
133 print "CAS2. Authenticate for step 1. ticket is empty" 136 ticket = ticket_array[0]
137 print "CAS2. Authenticate for step 1. ticket: " + ticket
139 if StringHelper.isEmptyString(ticket):
140 print "CAS2. Authenticate for step 1. ticket is invalid" 144 facesContext = CdiUtil.bean(FacesContext)
145 request = facesContext.getExternalContext().getRequest()
147 parametersMap = HashMap()
148 parametersMap.put(
"service", httpService.constructServerUrl(request) +
"/postlogin.htm")
149 if self.cas_renew_opt:
150 parametersMap.put(
"renew",
"true")
151 parametersMap.put(
"ticket", ticket)
152 cas_service_request_uri = requestParameterService.parametersAsString(parametersMap)
153 cas_service_request_uri = self.cas_host +
"/serviceValidate?" + cas_service_request_uri
154 if self.cas_extra_opts !=
None:
155 cas_service_request_uri = cas_service_request_uri +
"&" + self.cas_extra_opts
157 print "CAS2. Authenticate for step 1. cas_service_request_uri: " + cas_service_request_uri
159 http_client = httpService.getHttpsClient()
160 http_service_response = httpService.executeGet(http_client, cas_service_request_uri)
162 validation_content = httpService.convertEntityToString(httpService.getResponseContent(http_service_response.getHttpResponse()))
164 http_service_response.closeConnection()
166 print "CAS2. Authenticate for step 1. validation_content: " + validation_content
167 if StringHelper.isEmpty(validation_content):
168 print "CAS2. Authenticate for step 1. Ticket validation response is invalid" 171 cas2_auth_failure = self.parse_tag(validation_content,
"cas:authenticationFailure")
172 print "CAS2. Authenticate for step 1. cas2_auth_failure: ", cas2_auth_failure
174 cas2_user_uid = self.parse_tag(validation_content,
"cas:user")
175 print "CAS2. Authenticate for step 1. cas2_user_uid: ", cas2_user_uid
177 if (cas2_auth_failure !=
None)
or (cas2_user_uid ==
None):
178 print "CAS2. Authenticate for step 1. Ticket is invalid" 181 if self.cas_map_user:
182 print "CAS2. Authenticate for step 1. Attempting to find user by oxExternalUid: cas2:" + cas2_user_uid
185 find_user_by_uid = userService.getUserByAttribute(
"oxExternalUid",
"cas2:" + cas2_user_uid)
187 if find_user_by_uid ==
None:
188 print "CAS2. Authenticate for step 1. Failed to find user" 189 print "CAS2. Authenticate for step 1. Setting count steps to 2" 190 identity.setWorkingParameter(
"cas2_count_login_steps", 2)
191 identity.setWorkingParameter(
"cas2_user_uid", cas2_user_uid)
194 found_user_name = find_user_by_uid.getUserId()
195 print "CAS2. Authenticate for step 1. found_user_name: " + found_user_name
197 authenticationService.authenticate(found_user_name)
199 print "CAS2. Authenticate for step 1. Setting count steps to 1" 200 identity.setWorkingParameter(
"cas2_count_login_steps", 1)
204 print "CAS2. Authenticate for step 1. Attempting to find user by uid:" + cas2_user_uid
207 find_user_by_uid = userService.getUser(cas2_user_uid)
208 if find_user_by_uid ==
None:
209 print "CAS2. Authenticate for step 1. Failed to find user" 212 found_user_name = find_user_by_uid.getUserId()
213 print "CAS2. Authenticate for step 1. found_user_name: " + found_user_name
215 authenticationService.authenticate(found_user_name)
217 print "CAS2. Authenticate for step 1. Setting count steps to 1" 218 identity.setWorkingParameter(
"cas2_count_login_steps", 1)
222 print "CAS2. Authenticate for step 2" 224 if identity.isSetWorkingParameter(
"cas2_user_uid"):
225 print "CAS2. Authenticate for step 2. cas2_user_uid is empty" 228 cas2_user_uid = identity.getWorkingParameter(
"cas2_user_uid")
229 passed_step1 = StringHelper.isNotEmptyString(cas2_user_uid)
233 user_name = credentials.getUsername()
234 user_password = credentials.getPassword()
237 if StringHelper.isNotEmptyString(user_name)
and StringHelper.isNotEmptyString(user_password):
238 logged_in = authenticationService.authenticate(user_name, user_password)
245 find_user_by_uid = userService.getUserByAttribute(
"oxExternalUid",
"cas2:" + cas2_user_uid)
247 if find_user_by_uid ==
None:
249 find_user_by_uid = userService.addUserAttribute(user_name,
"oxExternalUid",
"cas2:" + cas2_user_uid)
250 if find_user_by_uid ==
None:
251 print "CAS2. Authenticate for step 2. Failed to update current user" 256 found_user_name = find_user_by_uid.getUserId()
257 print "CAS2. Authenticate for step 2. found_user_name: " + found_user_name
259 if StringHelper.equals(user_name, found_user_name):