CurrentToken

CurrentToken()
CurrentToken()
CurrentToken()
CurrentToken()
current_token()
CurrentToken()

Description

The CurrentToken function returns information about the active authentication:

  • When a token is used, a Reference to the token document is returned.

  • When a key is used, and the key exists in the current database (and not in a parent database), a Reference to the key document is returned.

  • When authentication is performed by an identity provider, an object containing the active JWT’s claims is returned.

For all other cases, CurrentToken emits an error. These cases include:

  • Authentication uses the "root" Fauna secret.

  • Authentication uses a key that has the database field set.

  • Authentication uses a key that exists in a parent database, for example, when using a scoped key.

Parameters

None.

Returns

For tokens, and keys defined in the current database, a Reference to the associated token/key.

For JWTs, an object containing the claims from the active JWT.

For connections using the "root" Fauna key, or a key that has the database field defined, an error is returned.

Examples

  1. The following query runs in the context of a Fauna token:

    try
    {
        Value result = await client.Query(
            CurrentToken()
        );
    
        Console.WriteLine(result);
    }
    catch (Exception e)
    {
        Console.WriteLine($"ERROR: {e.Message}");
    }
    RefV(id = "1", collection = RefV(id = "tokens"))
    result, err := client.Query(
    	f.CurrentToken())
    
    if err != nil {
    	fmt.Fprintln(os.Stderr, err)
    } else {
    	fmt.Println(result)
    }
    {1 0xc000200210 0xc000200210 <nil>}
    System.out.println(
        client.query(
            CurrentToken()
        ).get());
    ref(id = "1", collection = ref(id = "tokens"))
    client.query(
      q.CurrentToken()
    )
    .then((ret) => console.log(ret))
    .catch((err) => console.error(
      'Error: [%s] %s: %s',
      err.name,
      err.message,
      err.errors()[0].description,
    ))
    Ref(Tokens(), "1")
    result = client.query(
      q.current_token()
    )
    print(result)
    Ref(id=1, collection=Ref(id=tokens))
    CurrentToken()
    Ref(Tokens(), "1")
    Query metrics:
    •    bytesIn:  22

    •   bytesOut:  70

    • computeOps:   1

    •    readOps:   0

    •   writeOps:   0

    •  readBytes:  96

    • writeBytes:   0

    •  queryTime: 7ms

    •    retries:   0

  2. The following query runs in the context of a Fauna key:

    try
    {
        Value result = await client.Query(
            CurrentToken()
        );
    
        Console.WriteLine(result);
    }
    catch (Exception e)
    {
        Console.WriteLine($"ERROR: {e.Message}");
    }
    RefV(id = "1", collection = RefV(id = "keys"))
    result, err := client.Query(
    	f.CurrentToken())
    
    if err != nil {
    	fmt.Fprintln(os.Stderr, err)
    } else {
    	fmt.Println(result)
    }
    {1 0xc000109650 0xc000109650 <nil>}
    System.out.println(
        client.query(
            CurrentToken()
        ).get());
    ref(id = "1", collection = ref(id = "keys"))
    client.query(
      q.CurrentToken()
    )
    .then((ret) => console.log(ret))
    .catch((err) => console.error(
      'Error: [%s] %s: %s',
      err.name,
      err.message,
      err.errors()[0].description,
    ))
    Ref(Keys(), "1")
    result = client.query(
      q.current_token()
    )
    print(result)
    Ref(id=1, collection=Ref(id=keys))
    CurrentToken()
    Ref(Keys(), "1")
    Query metrics:
    •    bytesIn:    22

    •   bytesOut:    68

    • computeOps:     1

    •    readOps:     0

    •   writeOps:     0

    •  readBytes:     0

    • writeBytes:     0

    •  queryTime: 343ms

    •    retries:     0

  3. The following query runs in the context of a Fauna key defined in a parent database:

    try
    {
        Value result = await client.Query(
            CurrentToken()
        );
    
        Console.WriteLine(result);
    }
    catch (Exception e)
    {
        Console.WriteLine($"ERROR: {e.Message}");
    }
    ERROR: invalid token: Token metadata is not accessible.
    result, err := client.Query(
    	f.CurrentToken())
    
    if err != nil {
    	fmt.Fprintln(os.Stderr, err)
    } else {
    	fmt.Println(result)
    }
    Response error 400. Errors: [](invalid token): Token metadata is not accessible., details: []
    try {
        System.out.println(
            client.query(
                CurrentToken()
            ).get());
    } catch (Exception e) {
        System.out.println("ERROR " + e.getMessage());
    }
    ERROR com.faunadb.client.errors.BadRequestException: invalid token: Token metadata is not accessible.
    client.query(
      q.CurrentToken()
    )
    .then((ret) => console.log(ret))
    .catch((err) => console.error(
      'Error: [%s] %s: %s',
      err.name,
      err.message,
      err.errors()[0].description,
    ))
    Error: [BadRequest] invalid token: Token metadata is not accessible.
    try:
      result = client.query(
        q.current_token()
      )
      print(result)
    except:
      print("Error: ", sys.exc_info()[0], sys.exc_info()[1])
    Error:  <class 'faunadb.errors.BadRequest'> ErrorData(code='invalid token', description='Token metadata is not accessible.', position=[], failures=None)
    The Shell version of this example is not currently available.
    Query metrics:
    •    bytesIn:  22

    •   bytesOut: 101

    • computeOps:   1

    •    readOps:   0

    •   writeOps:   0

    •  readBytes:   0

    • writeBytes:   0

    •  queryTime: 2ms

    •    retries:   0

  4. The following query runs in the context of a JWT token:

    try
    {
        Value result = await client.Query(
            CurrentToken()
        );
    
        Console.WriteLine(result);
    }
    catch (Exception e)
    {
        Console.WriteLine($"ERROR: {e.Message}");
    }
    ObjectV(iss: StringV(https://dev--nozpv3z.us.auth0.com/),sub: StringV(8cYrAhHUTtqr9eSliRmdrGryJhYbcPQA@clients),aud: StringV(https://db.fauna.com/db/yo8yrjgkcydye),iat: LongV(1617396332),exp: LongV(1617482732),azp: StringV(8cYrAhHUTtqr9eSliRmdrGryJhYbcPQA),gty: StringV(client-credentials))
    result, err := client.Query(
    	f.CurrentToken())
    
    if err != nil {
    	fmt.Fprintln(os.Stderr, err)
    } else {
    	fmt.Println(result)
    }
    map[aud:https://db.fauna.com/db/yo8yrjgkcydye azp:8cYrAhHUTtqr9eSliRmdrGryJhYbcPQA exp:1617728575 gty:client-credentials iat:1617642175 iss:https://dev--nozpv3z.us.auth0.com/ sub:8cYrAhHUTtqr9eSliRmdrGryJhYbcPQA@clients]
    System.out.println(
        client.query(
            CurrentToken()
        ).get());
    {iss: "https://dev--nozpv3z.us.auth0.com/", sub: "l6vJS8QvHC2LmiGRaOTiE16givuufR22@clients", aud: "https://db.fauna.com/db/yxxf5x9w1ybyn", iat: 1611084659, exp: 1611171059, azp: "l6vJS8QvHC2LmiGRaOTiE16givuufR22", gty: "client-credentials"}
    client.query(
      q.CurrentToken()
    )
    .then((ret) => console.log(ret))
    .catch((err) => console.error(
      'Error: [%s] %s: %s',
      err.name,
      err.message,
      err.errors()[0].description,
    ))
    {
      iss: 'https://dev--nozpv3z.us.auth0.com/',
      sub: 'l6vJS8QvHC2LmiGRaOTiE16givuufR22@clients',
      aud: 'https://db.fauna.com/db/yxxf5x9w1ybyn',
      iat: 1611084659,
      exp: 1611171059,
      azp: 'l6vJS8QvHC2LmiGRaOTiE16givuufR22',
      gty: 'client-credentials'
    }
    result = client.query(
      q.current_token()
    )
    print(result)
    {'iss': 'https://dev--nozpv3z.us.auth0.com/', 'sub': '8cYrAhHUTtqr9eSliRmdrGryJhYbcPQA@clients', 'aud': 'https://db.fauna.com/db/yo8yrjgkcydye', 'iat': 1617997880, 'exp': 1618084280, 'azp': '8cYrAhHUTtqr9eSliRmdrGryJhYbcPQA', 'gty': 'client-credentials'}
    CurrentToken()
    {
      iss: 'https://dev--nozpv3z.us.auth0.com/',
      sub: '8cYrAhHUTtqr9eSliRmdrGryJhYbcPQA@clients',
      aud: 'https://db.fauna.com/db/yo8yrjgkcydye',
      iat: 1624306581,
      exp: 1624392981,
      azp: '8cYrAhHUTtqr9eSliRmdrGryJhYbcPQA',
      gty: 'client-credentials'
    }
    Query metrics:
    •    bytesIn:  22

    •   bytesOut: 254

    • computeOps:   1

    •    readOps:   0

    •   writeOps:   0

    •  readBytes:   0

    • writeBytes:   0

    •  queryTime: 1ms

    •    retries:   0

Is this article helpful? 

Tell Fauna how the article can be improved:
Visit Fauna's forums or email docs@fauna.com

Thank you for your feedback!