Skip to main content

OAuth2 client for Palantir Foundry

Project description

Palantir OAuth Client

A library for performing OAuth2 authentication with Multipass in order to obtain credentials for querying Foundry APIs.

This library supports two modes of operation for the Authorization code OAuth2 flow:

  1. Command line prompt: A user will be prompted to navigate to Foundry and enter the resulting authorization_code in their console after successful authentication.

  2. Local webserver: A local webserver will be created to receive the redirect after successful authentication. The token exchange will be performed automatically.

If the offline_access scope is specified, the credential will additionally contain a refresh token. When loading cached credentials (see below), the refresh token will be used to update invalid or expired credentials. In the case credentials cannot be obtained the user will be prompted to log in as above.

Usage

Use the palantir_oauth_client.get_user_credentials() function to authenticate to Foundry APIs.

import requests
from palantir_oauth_client import get_user_credentials

hostname = "127.0.0.1:8080"
client_id = "f5496be223e4db85c6a7c99bc5c2d81a"
credentials = get_user_credentials(["offline_access"], hostname, client_id)

headers = {"Authorization": "Bearer " + credentials.token}
response = requests.get(f"https://{hostname}/multipass/api/me", headers=headers)
print("Hello, {}!".format(response.json().get("username")))

Client Registration

A third-party client application needs to have been created in Multipass and the client_id provided when calling palantir_oauth_client.get_user_credentials(). This client should be registered as a Public client (native or single-page application) when it is not possible to securely store the client_secret. The library uses the PKCE OAuth2 extension for all requests regardless of the type of client that has been registered.

The following redirect URIs should use be specified for each mode of operation:

  1. Command line prompt: https://<hostname>/multipass/api/oauth2/callback

  2. Local webserver: http://127.0.0.1/

Caching

When obtaining credentials using palantir_oauth_client.get_user_credentials() you may specify a palantir_oauth_client.cache.CredentialsCache. There are three implementations:

  1. palantir_oauth_client.cache.READ_WRITE (default): A read-write cache that will persist credentials to disk when offline_access scope is requested. The cached refresh tokens will be used when obtaining credentials where possible to avoid explicit re-authentication.

  2. palantir_oauth_client.cache.REAUTH: A write-only cache that will persist credentials to disk when offline_access scope is requested but will require reauthentication when obtaining credentials.

  3. palantir_oauth_client.cache.NOOP: Always requires reauthentication and never persists credentials to disk.

Persisted credentials will be stored in the default user home directory at ~/.foundry/oauth. Caching should only be used when this home directory is secure and inaccessible by other users who would not otherwise have access to the Foundry credentials.

Contributing

See the CONTRIBUTING.md document. Releases are published to pypi on tag builds and are automatically re-published to conda using conda-forge.

License

This project is made available under the Apache 2.0 License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

palantir-oauth-client-1.5.1.tar.gz (17.0 kB view details)

Uploaded Source

Built Distribution

palantir_oauth_client-1.5.1-py3-none-any.whl (21.9 kB view details)

Uploaded Python 3

File details

Details for the file palantir-oauth-client-1.5.1.tar.gz.

File metadata

  • Download URL: palantir-oauth-client-1.5.1.tar.gz
  • Upload date:
  • Size: 17.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.12 CPython/3.10.2 Linux/5.15.0-1030-aws

File hashes

Hashes for palantir-oauth-client-1.5.1.tar.gz
Algorithm Hash digest
SHA256 aedf1e60a1afdfafa22e69311eccc8ef760b411926b162cc58b3167931a9e376
MD5 6f14f525557ee3b97a1e16af3b25c2ed
BLAKE2b-256 edcb3ac33b4bacaa5b0cef2b4f80a94d9a09f5a40a37c3aa7380843f77e0a7ae

See more details on using hashes here.

Provenance

File details

Details for the file palantir_oauth_client-1.5.1-py3-none-any.whl.

File metadata

File hashes

Hashes for palantir_oauth_client-1.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 63da31ee7a6179138824d847ce8deb85c86f52b854d55762690e9bafa420a755
MD5 ea59b57260bb71543fac8c022acf3706
BLAKE2b-256 7c3d44ddb359a71236be77226b1873ea53996540f6f18a19071fd04b85d1d356

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page