def pair(self): try: # ------------------------------------------------------------------ params = dict(**request.params) enc_response = params.get('pairing_response') if enc_response is None: raise Exception('Parameter missing') # ------------------------------------------------------------------ dec_response = decrypt_pairing_response(enc_response) token_type = dec_response.token_type pairing_data = dec_response.pairing_data if not hasattr(pairing_data, 'serial') or \ pairing_data.serial is None: raise ValidateError( 'Pairing responses with no serial attached ' 'are currently not implemented.') # ------------------------------------------------------------------ # TODO: pairing policy tokens = getTokens4UserOrSerial(None, pairing_data.serial) if not tokens: raise Exception('Invalid serial in pairing response') if len(tokens) > 1: raise Exception('Multiple tokens found. Pairing not possible') token = tokens[0] # ------------------------------------------------------------------ if token.type != token_type: raise Exception('Serial in pairing response doesn\'t match ' 'supplied token_type') # ------------------------------------------------------------------ token.pair(pairing_data) Session.commit() return sendResult(response, False) # ---------------------------------------------------------------------- except Exception: Session.rollback() return sendResult(response, False, 0, status=False) finally: Session.close()
def pair(self): """ validate/pair: for the enrollment of qr and push token """ try: # -------------------------------------------------------------- -- enc_response = self.request_params.get('pairing_response') if enc_response is None: raise Exception('Parameter missing') # -------------------------------------------------------------- -- dec_response = decrypt_pairing_response(enc_response) token_type = dec_response.token_type pairing_data = dec_response.pairing_data if not hasattr(pairing_data, 'serial') or \ pairing_data.serial is None: raise ValidateError('Pairing responses with no serial attached' ' are currently not implemented.') # --------------------------------------------------------------- - # TODO: pairing policy tokens = getTokens4UserOrSerial(None, pairing_data.serial) if not tokens: raise Exception('Invalid serial in pairing response') if len(tokens) > 1: raise Exception('Multiple tokens found. Pairing not possible') token = tokens[0] # prepare some audit entries t_owner = token.getUser() realms = token.getRealms() realm = '' if realms: realm = realms[0] c.audit['user'] = t_owner or '' c.audit['realm'] = realm # --------------------------------------------------------------- -- if token.type != token_type: raise Exception('Serial in pairing response doesn\'t match ' 'supplied token_type') # --------------------------------------------------------------- -- token.pair(pairing_data) c.audit['success'] = 1 Session.commit() return sendResult(response, False) # ------------------------------------------------------------------- -- except Exception as exx: log.exception("validate/pair failed: %r" % exx) c.audit['info'] = unicode(exx) Session.rollback() return sendResult(response, False, 0, status=False) finally: Session.close()
def pair(self): """ validate/pair: for the enrollment of qr and push token """ try: # -------------------------------------------------------------- -- enc_response = self.request_params.get("pairing_response") if enc_response is None: raise Exception("Parameter missing") # -------------------------------------------------------------- -- dec_response = decrypt_pairing_response(enc_response) token_type = dec_response.token_type pairing_data = dec_response.pairing_data if ( not hasattr(pairing_data, "serial") or pairing_data.serial is None ): raise ValidateError( "Pairing responses with no serial attached" " are currently not implemented." ) # --------------------------------------------------------------- - # TODO: pairing policy tokens = getTokens4UserOrSerial(None, pairing_data.serial) if not tokens: raise Exception("Invalid serial in pairing response") if len(tokens) > 1: raise Exception("Multiple tokens found. Pairing not possible") token = tokens[0] # prepare some audit entries t_owner = token.getUser() realms = token.getRealms() realm = "" if realms: realm = realms[0] g.audit["user"] = t_owner or "" g.audit["realm"] = realm # --------------------------------------------------------------- -- if token.type != token_type: raise Exception( "Serial in pairing response doesn't match " "supplied token_type" ) # --------------------------------------------------------------- -- token.pair(pairing_data) g.audit["success"] = 1 g.audit["serial"] = token.getSerial() db.session.commit() return sendResult(response, False) # ------------------------------------------------------------------- -- except Exception as exx: log.error("validate/pair failed: %r", exx) g.audit["info"] = str(exx) db.session.rollback() return sendResult(response, False, 0, status=False)
def pair(self): """ validate/pair: for the enrollment of qr and push token """ try: # -------------------------------------------------------------- -- enc_response = self.request_params.get('pairing_response') if enc_response is None: raise Exception('Parameter missing') # -------------------------------------------------------------- -- dec_response = decrypt_pairing_response(enc_response) token_type = dec_response.token_type pairing_data = dec_response.pairing_data if not hasattr(pairing_data, 'serial') or \ pairing_data.serial is None: raise ValidateError('Pairing responses with no serial attached' ' are currently not implemented.') # --------------------------------------------------------------- - # TODO: pairing policy tokens = getTokens4UserOrSerial(None, pairing_data.serial) if not tokens: raise Exception('Invalid serial in pairing response') if len(tokens) > 1: raise Exception('Multiple tokens found. Pairing not possible') token = tokens[0] # prepare some audit entries t_owner = token.getUser() realms = token.getRealms() realm = '' if realms: realm = realms[0] c.audit['user'] = t_owner or '' c.audit['realm'] = realm # --------------------------------------------------------------- -- if token.type != token_type: raise Exception('Serial in pairing response doesn\'t match ' 'supplied token_type') # --------------------------------------------------------------- -- token.pair(pairing_data) c.audit['success'] = 1 c.audit['serial'] = token.getSerial() Session.commit() return sendResult(response, False) # ------------------------------------------------------------------- -- except Exception as exx: log.exception("validate/pair failed: %r" % exx) c.audit['info'] = unicode(exx) Session.rollback() return sendResult(response, False, 0, status=False) finally: Session.close()