141 def prepareForStep(self, configurationAttributes, requestParameters, step):
142 identity = CdiUtil.bean(Identity)
147 print "U2F. Prepare for step 2" 149 session_id = CdiUtil.bean(SessionIdService).getSessionIdFromCookie()
150 if StringHelper.isEmpty(session_id):
151 print "U2F. Prepare for step 2. Failed to determine session_id" 154 authenticationService = CdiUtil.bean(AuthenticationService)
155 user = authenticationService.getAuthenticatedUser()
157 print "U2F. Prepare for step 2. Failed to determine user name" 160 u2f_application_id = configurationAttributes.get(
"u2f_application_id").getValue2()
163 deviceRegistrationService = CdiUtil.bean(DeviceRegistrationService)
165 userInum = user.getAttribute(
"inum")
167 registrationRequest =
None 168 authenticationRequest =
None 170 deviceRegistrations = deviceRegistrationService.findUserDeviceRegistrations(userInum, u2f_application_id)
171 if (deviceRegistrations.size() > 0):
172 print "U2F. Prepare for step 2. Call FIDO U2F in order to start authentication workflow" 175 authenticationRequestService = FidoU2fClientFactory.instance().createAuthenticationRequestService(self.metaDataConfiguration)
176 authenticationRequest = authenticationRequestService.startAuthentication(user.getUserId(),
None, u2f_application_id, session_id)
177 except ClientResponseFailure, ex:
178 if (ex.getResponse().getResponseStatus() != Response.Status.NOT_FOUND):
179 print "U2F. Prepare for step 2. Failed to start authentication workflow. Exception:", sys.exc_info()[1]
182 print "U2F. Prepare for step 2. Call FIDO U2F in order to start registration workflow" 183 registrationRequestService = FidoU2fClientFactory.instance().createRegistrationRequestService(self.metaDataConfiguration)
184 registrationRequest = registrationRequestService.startRegistration(user.getUserId(), u2f_application_id, session_id)
186 identity.setWorkingParameter(
"fido_u2f_authentication_request", ServerUtil.asJson(authenticationRequest))
187 identity.setWorkingParameter(
"fido_u2f_registration_request", ServerUtil.asJson(registrationRequest))
191 print "U2F. Prepare for step 3"