Esempio n. 1
0
    def wrapper(request, *args, **kwargs):
        data = request.headers
        authorization = decode_authorization_header(data)

        if authorization == dict():
            error = "Missing required parameter."
            return json_response({"error": error}, status=400)


        request_validator = GMGRequestValidator()
        resource_endpoint = ResourceEndpoint(request_validator)
        valid, r = resource_endpoint.validate_protected_resource_request(
                uri=request.url,
                http_method=request.method,
                body=request.data,
                headers=dict(request.headers),
                )

        if not valid:
            error = "Invalid oauth prarameter."
            return json_response({"error": error}, status=400)

        # Fill user if not already
        token = authorization[u"oauth_token"]
        request.access_token = AccessToken.query.filter_by(token=token).first()
        if request.access_token is not None and request.user is None:
            user_id = request.access_token.actor
            request.user = LocalUser.query.filter_by(id=user_id).first()

        return controller(request, *args, **kwargs)
Esempio n. 2
0
    def wrapper(request, *args, **kwargs):
        data = request.headers
        authorization = decode_authorization_header(data)

        if authorization == dict():
            error = "Missing required parameter."
            return json_response({"error": error}, status=400)

        request_validator = GMGRequestValidator()
        resource_endpoint = ResourceEndpoint(request_validator)
        valid, r = resource_endpoint.validate_protected_resource_request(
            uri=request.url,
            http_method=request.method,
            body=request.data,
            headers=dict(request.headers),
        )

        if not valid:
            error = "Invalid oauth prarameter."
            return json_response({"error": error}, status=400)

        # Fill user if not already
        token = authorization[u"oauth_token"]
        request.access_token = AccessToken.query.filter_by(token=token).first()
        if request.access_token is not None and request.user is None:
            user_id = request.access_token.actor
            request.user = LocalUser.query.filter_by(id=user_id).first()

        return controller(request, *args, **kwargs)
Esempio n. 3
0
class Authenticator(interfaces.Authenticates):
    def __init__(self, **conf):
        """ Construct a concrete object with a set of keyword configuration
        options.

        :param **conf:

            oauth_validator: RequestValidator for oauthlib

        :raises `talons.exc.BadConfiguration` if configuration options
            are not valid or conflict with each other.
        """
        oauth_validator = conf.pop('oauth1_validator', None)
        if not oauth_validator:
            msg = ("Missing required oauth_validator "
                   "configuration option.")
            LOG.error(msg)
            raise exc.BadConfiguration(msg)

        self.provider = ResourceEndpoint(oauth_validator)
        self.realms = conf.pop('oauth1_realms', [])

    def authenticate(self, identity):
        """ Authenticate user client using oauthlib's ResourceEndopoint
        """
        v, r = self.provider.validate_protected_resource_request(
            # we use gettattr because we depend on overriden Identity
            # - other identities can lack these attributes
            getattr(identity, 'url', None),
            http_method=getattr(identity, 'method', None),
            body=getattr(identity, 'stream', None),
            headers=getattr(identity, 'headers', None),
            realms=self.realms,
        )
        return bool(v)
Esempio n. 4
0
    def wrapper(request, *args, **kwargs):
        data = request.headers
        authorization = decode_authorization_header(data)

        if authorization == dict():
            error = "Missing required parameter."
            return json_response({"error": error}, status=400)

        request_validator = GMGRequestValidator()
        resource_endpoint = ResourceEndpoint(request_validator)
        valid, request = resource_endpoint.validate_protected_resource_request(
            uri=request.url,
            http_method=request.method,
            body=request.get_data(),
            headers=dict(request.headers),
        )

        if not valid:
            error = "Invalid oauth prarameter."
            return json_response({"error": error}, status=400)

        return controller(request, *args, **kwargs)
Esempio n. 5
0
class PistonOAuthAuthentication(BaseAuthentication):
    def __init__(self):
        validator = PistonRequestValidator()
        self.provider = ResourceEndpoint(validator)

    def authenticate_header(self, request):
        return 'OAuth realm="API"'

    def authenticate(self, request):
        v, r = self.provider.validate_protected_resource_request(
            **oauthlib_request(request)
        )
        if v:
            return r.token.user, r.token
Esempio n. 6
0
    def wrapper(request, *args, **kwargs):
        data = request.headers
        authorization = decode_authorization_header(data)

        if authorization == dict():
            error = "Missing required parameter."
            return json_response({"error": error}, status=400)


        request_validator = GMGRequestValidator()
        resource_endpoint = ResourceEndpoint(request_validator)
        valid, request = resource_endpoint.validate_protected_resource_request(
                uri=request.url,
                http_method=request.method,
                body=request.get_data(),
                headers=dict(request.headers),
                )

        if not valid:
            error = "Invalid oauth prarameter."
            return json_response({"error": error}, status=400)

        return controller(request, *args, **kwargs)
Esempio n. 7
0
    def __init__(self, **conf):
        """ Construct a concrete object with a set of keyword configuration
        options.

        :param **conf:

            oauth_validator: RequestValidator for oauthlib

        :raises `talons.exc.BadConfiguration` if configuration options
            are not valid or conflict with each other.
        """
        oauth_validator = conf.pop('oauth1_validator', None)
        if not oauth_validator:
            msg = ("Missing required oauth_validator "
                   "configuration option.")
            LOG.error(msg)
            raise exc.BadConfiguration(msg)

        self.provider = ResourceEndpoint(oauth_validator)
        self.realms = conf.pop('oauth1_realms', [])
Esempio n. 8
0
 def __init__(self):
     validator = PistonRequestValidator()
     self.provider = ResourceEndpoint(validator)
Esempio n. 9
0
 def __init__(self, request_validator):
     RequestTokenEndpoint.__init__(self, request_validator)
     AuthorizationEndpoint.__init__(self, request_validator)
     AccessTokenEndpoint.__init__(self, request_validator)
     ResourceEndpoint.__init__(self, request_validator)
Esempio n. 10
0
        if token != 'crm':
            app.logger.debug('Failed on validate_access_token')
            return False
        return True

    def validate_realms(self,
                        client_key,
                        token,
                        request,
                        uri=None,
                        realms=None):
        return True


validator = DialerRequestValidator()
endpoint = ResourceEndpoint(validator)


def oauth_protected(realms=None):
    def wrapper(f):
        @functools.wraps(f)
        def verify_oauth(*args, **kwargs):
            app.logger.debug('Start verify request')
            app.logger.debug(
                'request.url=%s request.method=%s request.data=%s request.headers=%s realms=%s'
                % (request.url, request.method, request.form
                   or request.data, request.headers, realms))
            v, r = endpoint.validate_protected_resource_request(
                request.url,
                http_method=request.method,
                body=request.form or request.data,