Exemplo n.º 1
0
    def __init__(self, context):
        super(MetricFacade, self).__init__(context)

        authorization = IAuthorizationTool(self.context)

        auth_token = None
        credentials = None

        global_credentials_dict = authorization.extractGlobalConfCredentials()
        global_credentials = (global_credentials_dict['login'],
                              global_credentials_dict['password'])

        if _isRunningFromUI(context):
            auth_token = context.REQUEST.cookies.get(Z_AUTH_TOKEN, None)
            if not auth_token:
                credentials_dict = authorization.extractCredentials(
                    context.REQUEST)
                credentials = (credentials_dict['login'],
                               credentials_dict['password'])
        else:
            credentials = None

        agent_suffix = 'python'
        if sys.argv[0]:
            agent_suffix = os.path.basename(sys.argv[0].rstrip(".py"))

        self._metrics_connection = MetricConnection(auth_token, credentials,
                                                    global_credentials,
                                                    agent_suffix)
Exemplo n.º 2
0
 def _setAuthorizationCookie(self):
     authorization = IAuthorizationTool(self.context)
     token = authorization.createAuthToken(self.request)
     self.request.response.setCookie(ZAUTH_COOKIE,
                                     token['id'],
                                     path="/",
                                     secure=True,
                                     http_only=True)
Exemplo n.º 3
0
 def __init__(self, userAgent):
     self._aggMapping = AGGREGATION_MAPPING
     urlstart = getGlobalConfiguration().get('metric-url',
                                             'http://localhost:8080')
     self._metric_url = '%s/%s' % (urlstart, METRIC_URL_PATH)
     self._metric_url_v2 = '%s/%s' % (urlstart, WILDCARD_URL_PATH)
     creds = IAuthorizationTool(None).extractGlobalConfCredentials()
     auth = base64.b64encode('{login}:{password}'.format(**creds))
     self.agent = CookieAgent(
         Agent(reactor, pool=getPool(), connectTimeout=30), self.cookieJar)
     self._headers = Headers({
         'Authorization': ['basic %s' % auth],
         'content-type': ['application/json'],
         'User-Agent': ['Zenoss: %s' % userAgent]
     })
     self.onMetricsFetched = None
Exemplo n.º 4
0
    def __init__(self, context):
        super(MetricFacade, self).__init__(context)
        self._metric_url = getGlobalConfiguration().get(
            'metric-url', 'http://localhost:8080/')

        self._req_session = requests.Session()
        self._authCookie = {}
        self._authorization = IAuthorizationTool(self.context)
        self._credentials = None
        if _isRunningFromUI(context):
            token = context.REQUEST.cookies.get('ZAuthToken', None)
            if token:
                self._authCookie = {'ZAuthToken': token}
            else:
                self._credentials = self._authorization.extractCredentials(
                    context.REQUEST)
        else:
            self._credentials = self._authorization.extractGlobalConfCredentials(
            )
Exemplo n.º 5
0
    def __call__(self, *args, **kwargs):
        """
        Extract login/password credentials, test authentication, and create a token
        """

        # test for uuid
        if self.uuid is None:
            self.request.response.setStatus(503)
            self.request.response.write(
                "System uninitialized - please execute setup wizard")
            transaction.abort()
            return

        authorization = IAuthorizationTool(self.context.context)
        credentials = authorization.extractCredentials(self.request)

        login = credentials.get('login', None)
        password = credentials.get('password', None)

        # no credentials to test authentication
        if login is None or password is None:
            self.request.response.setStatus(401)
            self.request.response.write("Missing Authentication Credentials")
            transaction.abort()
            return

        # test authentication
        if not authorization.authenticateCredentials(login, password):
            self.request.response.setStatus(401)
            self.request.response.write("Failed Authentication")
            transaction.abort()
            return

        # create the session data
        token = authorization.createAuthToken(self.request)
        self.request.response.setHeader('X-ZAuth-TokenId', token['id'])
        self.request.response.setHeader('X-ZAuth-TokenExpiration',
                                        token['expires'])
        self.request.response.setHeader('X-ZAuth-TenantId', self.uuid)
        return json.dumps(token)
Exemplo n.º 6
0
    def __call__(self, *args, **kwargs):
        """
            extract token id, test token expiration, and return token
        """
        # test for uuid
        if self.uuid is None:
            self.request.response.setStatus(503)
            self.request.response.write(
                "System uninitialized - please execute setup wizard")
            return

        tokenId = self.request.get('id', None)
        if tokenId is None:
            tokenId = self.request.getHeader(ZAUTH_HEADER_ID)

        # missing token id
        if tokenId is None:
            self.request.response.setStatus(401)
            self.request.response.write("Missing Token Id")
            return

        authorization = IAuthorizationTool(self.context.context)

        #grab token to handle edge case, when expiration happens after expiration test
        tokenId = tokenId.strip('"')
        token = authorization.getToken(tokenId)
        if authorization.tokenExpired(tokenId):
            self.request.response.setStatus(401)
            self.request.response.write("Token Expired")
            return

        self.request.response.setHeader('X-ZAuth-TokenId', token['id'])
        self.request.response.setHeader('X-ZAuth-TokenExpiration',
                                        token['expires'])
        self.request.response.setHeader('X-ZAuth-TenantId', self.uuid)
        return json.dumps(token)