Beispiel #1
0
def create_oauth2_client(user):
    """
    Create an OAuth2 client associated with the given user and generate an
    access token for said client.

    :param user:
    :return: a Client (provider.oauth2) and an AccessToken
    """
    # Register an OAuth2 Client
    client = OAuth2Client(
        user=user,
        name=user.username,
        url="http://127.0.0.1/",
        redirect_uri="http://127.0.0.1/",
        client_type=constants.CONFIDENTIAL
    )
    client.save()

    # Generate an access token for the client
    access_token = AccessToken(
        user=user,
        client=client,

        # Set the access token to expire one day from now
        expires=timezone.now() + timedelta(1, 0),
        scope=constants.READ_WRITE
    )
    access_token.save()

    return client, access_token
Beispiel #2
0
def get_id_token(user):
    """
    Generates JWT ID-Token, using or creating user's OAuth access token.
    """
    try:
        client = Client.objects.get(name="edx-notes")
    except Client.DoesNotExist:
        raise ImproperlyConfigured(
            "OAuth2 Client with name 'edx-notes' is not present in the DB")
    try:
        access_token = AccessToken.objects.get(client=client,
                                               user=user,
                                               expires__gt=now())
    except AccessToken.DoesNotExist:
        access_token = AccessToken(client=client, user=user)
        access_token.save()

    id_token = oidc.id_token(access_token)
    secret = id_token.access_token.client.client_secret
    return id_token.encode(secret)
Beispiel #3
0
def create_token(user, client):
    token = AccessToken(client=client, user=user)
    token.save()
    return token