Exemplo n.º 1
0
    def OAuthCheckAccessResource(cls):
        from indico.modules.oauth.db import ConsumerHolder, AccessTokenHolder, OAuthServer

        oauth_request = oauth.Request.from_request(request.method, request.base_url, request.headers,
                                                   parameters=create_flat_args())
        Logger.get('oauth.resource').info(oauth_request)
        try:
            now = nowutc()
            consumer_key = oauth_request.get_parameter('oauth_consumer_key')
            if not ConsumerHolder().hasKey(consumer_key):
                raise OAuthError('Invalid Consumer Key', 401)
            consumer = ConsumerHolder().getById(consumer_key)
            token = oauth_request.get_parameter('oauth_token')
            if not token or not AccessTokenHolder().hasKey(token):
                raise OAuthError('Invalid Token', 401)
            access_token = AccessTokenHolder().getById(token)
            oauth_consumer = oauth.Consumer(consumer.getId(), consumer.getSecret())
            OAuthServer.getInstance().verify_request(oauth_request, oauth_consumer, access_token.getToken())
            if access_token.getConsumer().getId() != oauth_consumer.key:
                raise OAuthError('Invalid Consumer Key', 401)
            elif (now - access_token.getTimestamp()) > timedelta(seconds=Config.getInstance().getOAuthAccessTokenTTL()):
                raise OAuthError('Expired Token', 401)
            return access_token
        except oauth.Error, e:
            if e.message.startswith("Invalid Signature"):
                raise OAuthError("Invalid Signature", 401)
            else:
                raise OAuthError(e.message, 400)
Exemplo n.º 2
0
    def OAuthCheckAccessResource(cls, req, query_string):
        from indico.modules.oauth.db import  ConsumerHolder, AccessTokenHolder, OAuthServer

        oauth_request = oauth.Request.from_request(req.get_method(),req.construct_url(req.get_uri()), headers=req.headers_in, query_string=urlencode(query_string))
        Logger.get('oauth.resource').info(oauth_request)
        try:
            now = time.time()
            consumer_key = oauth_request.get_parameter('oauth_consumer_key')
            if not ConsumerHolder().hasKey(consumer_key):
                raise OAuthError('Invalid Consumer Key' , apache.HTTP_UNAUTHORIZED)
            consumer = ConsumerHolder().getById(consumer_key)
            token = oauth_request.get_parameter('oauth_token')
            if not token or not AccessTokenHolder().hasKey(token):
                raise OAuthError('Invalid Token', apache.HTTP_UNAUTHORIZED)
            access_token = AccessTokenHolder().getById(token)
            oauth_consumer = oauth.Consumer(consumer.getId(), consumer.getSecret())
            OAuthServer.getInstance().verify_request(oauth_request, oauth_consumer, access_token.getToken())
            if access_token.getConsumer().getId() != oauth_consumer.key:
                raise OAuthError('Invalid Consumer Key' , apache.HTTP_UNAUTHORIZED)
            elif (now - access_token.getTimestamp()) > Config.getInstance().getOAuthAccessTokenTTL():
                raise OAuthError('Expired Token', apache.HTTP_UNAUTHORIZED)
            return access_token
        except oauth.Error, e:
            if e.message.startswith("Invalid Signature"):
                raise OAuthError("Invalid Signature", apache.HTTP_UNAUTHORIZED)
            else:
                raise OAuthError(e.message, apache.HTTP_BAD_REQUEST)
Exemplo n.º 3
0
    def OAuthCheckAccessResource(cls):
        from indico.modules.oauth.db import ConsumerHolder, AccessTokenHolder, OAuthServer

        oauth_request = oauth.Request.from_request(
            request.method,
            request.base_url,
            request.headers,
            parameters=create_flat_args())
        Logger.get('oauth.resource').info(oauth_request)
        try:
            now = nowutc()
            consumer_key = oauth_request.get_parameter('oauth_consumer_key')
            if not ConsumerHolder().hasKey(consumer_key):
                raise OAuthError('Invalid Consumer Key', 401)
            consumer = ConsumerHolder().getById(consumer_key)
            token = oauth_request.get_parameter('oauth_token')
            if not token or not AccessTokenHolder().hasKey(token):
                raise OAuthError('Invalid Token', 401)
            access_token = AccessTokenHolder().getById(token)
            oauth_consumer = oauth.Consumer(consumer.getId(),
                                            consumer.getSecret())
            OAuthServer.getInstance().verify_request(oauth_request,
                                                     oauth_consumer,
                                                     access_token.getToken())
            if access_token.getConsumer().getId() != oauth_consumer.key:
                raise OAuthError('Invalid Consumer Key', 401)
            elif (now - access_token.getTimestamp()) > timedelta(
                    seconds=Config.getInstance().getOAuthAccessTokenTTL()):
                raise OAuthError('Expired Token', 401)
            return access_token
        except oauth.Error, e:
            if e.message.startswith("Invalid Signature"):
                raise OAuthError("Invalid Signature", 401)
            else:
                raise OAuthError(e.message, 400)
Exemplo n.º 4
0
 def _checkParams(self):
     AdminService._checkParams(self)
     self._pm = ParameterManager(self._params)
     consumerKey = self._pm.extract("consumer_key",
                                    pType=str,
                                    allowEmpty=False)
     if not ConsumerHolder().hasKey(consumerKey):
         raise ServiceError("", _("Consumer key not found"))
     self._consumer = ConsumerHolder().getById(consumerKey)
Exemplo n.º 5
0
 def _checkParams(self, params):
     try:
         RHOAuth._checkParams(self, params)
         consumer_key = self._oauth_request.get_parameter('oauth_consumer_key')
         Logger.get('oauth.request_token').info(consumer_key)
         if not ConsumerHolder().hasKey(consumer_key):
             raise OAuthError("Invalid Consumer Key", 401)
         self._consumer = ConsumerHolder().getById(consumer_key)
         #Logger.get('oauth.request_token').info(consumer.getSecret())
         oauth_consumer = oauth.Consumer(self._consumer.getId(), self._consumer.getSecret())
         OAuthServer.getInstance().verify_request(self._oauth_request, oauth_consumer, None)
     except oauth.Error, err:
         raise OAuthError(err.message, 401)
Exemplo n.º 6
0
class RHOAuthRequestToken(RHOAuth):
    def _checkParams(self, params):
        try:
            RHOAuth._checkParams(self, params)
            consumer_key = self._oauth_request.get_parameter("oauth_consumer_key")
            Logger.get("oauth.request_token").info(consumer_key)
            if not ConsumerHolder().hasKey(consumer_key):
                raise OAuthError("Invalid Consumer Key", 401)
            self._consumer = ConsumerHolder().getById(consumer_key)
            # Logger.get('oauth.request_token').info(consumer.getSecret())
            oauth_consumer = oauth.Consumer(self._consumer.getId(), self._consumer.getSecret())
            OAuthServer.getInstance().verify_request(self._oauth_request, oauth_consumer, None)
        except oauth.Error, err:
            raise OAuthError(err.message, 401)
Exemplo n.º 7
0
 def _checkParams(self, params):
     try:
         RHOAuth._checkParams(self, params)
         base.RHProtected._checkParams(self, params)
         request_token_key = self._oauth_request.get_parameter('oauth_token')
         if not TempRequestTokenHolder().hasKey(request_token_key):
             raise OAuthError("Invalid Token", 401)
         self._request_token = TempRequestTokenHolder().getById(request_token_key)
         if not ConsumerHolder().getById(self._request_token.getConsumer().getId()):
             raise OAuthError("Invalid Consumer Key", 401)
     except oauth.Error, err:
         raise OAuthError(err.message, 401)
Exemplo n.º 8
0
 def _checkParams(self, params):
     RHOAuth._checkParams(self, params)
     try:
         request_token_key = self._oauth_request.get_parameter('oauth_token')
         self.verifier = self._oauth_request.get_parameter('oauth_verifier')
         if not RequestTokenHolder().hasKey(request_token_key):
             raise OAuthError("Invalid Token", 401)
         self._request_token = RequestTokenHolder().getById(request_token_key)
         if self._request_token.getToken().verifier != self.verifier:
             raise OAuthError("Invalid Token", 401)
         if not ConsumerHolder().hasKey(self._request_token.getConsumer().getId()):
             raise OAuthError("Invalid Consumer Key", 401)
         consumer = oauth.Consumer(self._request_token.getConsumer().getId(), self._request_token.getConsumer().getSecret())
         OAuthServer.getInstance().verify_request(self._oauth_request, consumer, self._request_token.getToken())
     except oauth.Error, err:
         raise OAuthError(err.message, 401)
Exemplo n.º 9
0
    def _getAnswer(self):

        consumers = dict((consumer.getName(), consumer)
                         for consumer in ConsumerHolder().getList())

        if "indico-checkin" not in consumers:
            raise NoReportError(
                _("There is no indico-checkin consumer key for OAuth"))

        # QRCode (Version 6 with error correction L can contain up to 106 bytes)
        qr = QRCode(version=6,
                    error_correction=constants.ERROR_CORRECT_M,
                    box_size=4,
                    border=1)

        oauth_checkin = consumers["indico-checkin"]
        config = Config.getInstance()
        baseURL = config.getBaseSecureURL() if config.getBaseSecureURL(
        ) else config.getBaseURL()
        qr_data = {
            "event_id": self._conf.getId(),
            "title": self._conf.getTitle(),
            "date": format_date(self._conf.getAdjustedStartDate()),
            "server": {
                "baseUrl": baseURL,
                "consumerKey": oauth_checkin.getId(),
                "consumerSecret": oauth_checkin.getSecret(),
            }
        }
        json_qr_data = json.dumps(qr_data)
        qr.add_data(json_qr_data)
        qr.make(fit=True)
        qr_img = qr.make_image()

        output = StringIO()
        qr_img._img.save(output, format="png")
        im_data = output.getvalue()

        return 'data:image/png;base64,{0}'.format(base64.b64encode(im_data))
Exemplo n.º 10
0
    def getVars(self):
        wvars = WTemplated.getVars(self)
        ch = ConsumerHolder()

        wvars['consumers'] = sorted(ch.getList(), key=lambda c: c.getName())
        return wvars
Exemplo n.º 11
0
 def _getAnswer(self):
     ConsumerHolder().remove(self._consumer)
     return True
Exemplo n.º 12
0
 def _getAnswer(self):
     consumer = Consumer(OAuthUtils.gen_random_string(),
                         OAuthUtils.gen_random_string(), self._consumerName)
     ConsumerHolder().add(consumer)
     return fossilize(consumer)
Exemplo n.º 13
0
    def getVars(self):
        wvars = WTemplated.getVars(self)
        ch = ConsumerHolder()

        wvars['consumers'] = sorted(ch.getList(), key=lambda c: c.getName())
        return wvars