Esempio n. 1
0
    def activate_session(self, params, peer_certificate):
        self.logger.info('activate session')
        result = ua.ActivateSessionResult()
        if self.state != SessionState.Created:
            raise ServiceError(ua.StatusCodes.BadSessionIdInvalid)
        if InternalSession._current_connections >= InternalSession.max_connections:
            raise ServiceError(ua.StatusCodes.BadMaxConnectionsReached)
        self.nonce = create_nonce(32)
        result.ServerNonce = self.nonce
        for _ in params.ClientSoftwareCertificates:
            result.Results.append(ua.StatusCode())
        self.state = SessionState.Activated
        InternalSession._current_connections += 1
        id_token = params.UserIdentityToken
        if self.iserver.user_manager is not None:
            if isinstance(id_token, ua.UserNameIdentityToken):
                username, password = self.iserver.check_user_token(
                    self, id_token)
            else:
                username, password = None, None

            user = self.iserver.user_manager.get_user(
                self.iserver,
                username=username,
                password=password,
                certificate=peer_certificate)
            if user is None:
                raise ServiceError(ua.StatusCodes.BadUserAccessDenied)
            else:
                self.user = user
        self.logger.info("Activated internal session %s for user %s",
                         self.name, self.user)
        return result
 def activate_session(self, params):
     self.logger.info('activate session')
     result = ua.ActivateSessionResult()
     if self.state != SessionState.Created:
         raise ServiceError(ua.StatusCodes.BadSessionIdInvalid)
     self.nonce = create_nonce(32)
     result.ServerNonce = self.nonce
     for _ in params.ClientSoftwareCertificates:
         result.Results.append(ua.StatusCode())
     self.state = SessionState.Activated
     id_token = params.UserIdentityToken
     if isinstance(id_token, ua.UserNameIdentityToken):
         if self.iserver.check_user_token(self, id_token) is False:
             raise ServiceError(ua.StatusCodes.BadUserAccessDenied)
     self.logger.info("Activated internal session %s for user %s", self.name, self.user)
     return result