Пример #1
0
    def generate_feed_token(cls, feed_pk, user_pk):
        user_secret_key, created_unused = FeedSecretKey.objects.get_or_create(feed_id=feed_pk)

        secret_key = user_secret_key.secret_key.encode('utf-8')
        checksum = generate_random_from_vschar_set(length=10)

        return encrypt_cbc(int_to_base36(int(feed_pk)) + "." + int_to_base36(int(user_pk)) + '.'
                           + '.' + checksum,
                           SOCIAL_SETTINGS.FEED_TOKEN_SECRET_KEY) + '.' + encrypt_cbc(checksum, secret_key)
Пример #2
0
 def authorization(self):
     if self._request.response_type != "code":
         raise InvalidRequestError()
     state = self._request.state
     if not state:
         state = generate_random_from_vschar_set(length=30)
     self._state = state
     #self._request.save_session(AUTHORIZATION_STATE_KEY , state)
     self._server.check_available_scope(self._client, self._request.scope)
     code = self._server.generate_code(self._client, self._request.scope, self._request.user)
     return add_params_to_url(self.redirect_uri, {'code': code, 'state': self._state})
Пример #3
0
    def _generate_access_token(cls, client_pk, user_pk, scope, expires_in, is_refreshable):
        user_secret_key, created_unused = UserClientSecretKey.objects.get_or_create_safe(user_id=user_pk,
                                                                                         client=Client(pk=client_pk))

        secret_key = user_secret_key.secret_key.encode('utf-8')
        expire = CurrentTimestamp(expires_in)()
        checksum = generate_random_from_vschar_set(length=10)

        scope_str = cls.scope_to_str(scope)

        info = scope_str + "." + int_to_base36(int(is_refreshable))
        access_token = int_to_base36(expire) + "." + \
                       encrypt_cbc(int_to_base36(client_pk) + "." + int_to_base36(user_pk) + '.' + \
                       int_to_base36(expire) + '.' + info + '.' + checksum, OAUTH2_SETTINGS.ACCESS_TOKEN_SECRET_KEY) \
                       + '.' + encrypt_cbc(checksum, secret_key)
        if is_refreshable:
            refresh_token = encrypt_cbc(checksum + "." + generate_random_from_vschar_set(length=2),
                                        secret_key)
        else:
            refresh_token = None
        ret = OAuth2Credential(access_token=access_token, refresh_token=refresh_token, user_secret_key=secret_key,
                                expires_in=expires_in)
        cls.store_credential(ret, client_pk, user_pk, scope, expire, is_refreshable)
        return ret
Пример #4
0
    def implicit(self, expires_in):
        if self._request.response_type != "token":
            raise InvalidRequestError()

        redirect_uri = self._request.redirect_uri
        state = self._request.state
        scope = self._request.scope
        if not state:
            state = generate_random_from_vschar_set(length=30)

        access_token = self._server.generate_access_token(self._client, self._request.user, scope, expires_in,
                                                          is_refreshable=False)
        return add_params_to_url(redirect_uri,
                                 {'access_token': access_token.access_token, 'state': state, 'scope': ' '.join(scope),
                                  'expires_in': expires_in, 'token_type': 'Bearer'})
Пример #5
0
def _feed_rand_key():
    return generate_random_from_vschar_set(10)
Пример #6
0
def _generate_random_from_vschar_set_for_secret_key():
    return generate_random_from_vschar_set(OAUTH2_SETTINGS.USER_SECRET_KEY_LENGTH)
Пример #7
0
def _generate_random_from_vschar_set_for_client_secret():
    return generate_random_from_vschar_set(OAUTH2_SETTINGS.CLIENT_ID_LENGTH)
Пример #8
0
 def generate_code(cls, client, scope, user):
     checksum = generate_random_from_vschar_set(length=3)
     info = int_to_base36(client.pk) + "." + cls.scope_to_str(scope) + "." + int_to_base36(user.pk) + "." \
            + int_to_base36(CurrentTimestamp(OAUTH2_SETTINGS.CODE_EXPIRATION)()) + '.' + checksum
     return encrypt_cbc(info, OAUTH2_SETTINGS.CODE_SECRET_KEY)
Пример #9
0
def generate_client_id(length=30):
    return generate_random_from_vschar_set(length)