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:
-
Command line prompt: A user will be prompted to navigate to Foundry and enter the resulting
authorization_code
in their console after successful authentication. -
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:
-
Command line prompt:
https://<hostname>/multipass/api/oauth2/callback
-
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:
-
palantir_oauth_client.cache.READ_WRITE
(default): A read-write cache that will persist credentials to disk whenoffline_access
scope is requested. The cached refresh tokens will be used when obtaining credentials where possible to avoid explicit re-authentication. -
palantir_oauth_client.cache.REAUTH
: A write-only cache that will persist credentials to disk whenoffline_access
scope is requested but will require reauthentication when obtaining credentials. -
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
Built Distribution
File details
Details for the file palantir-oauth-client-1.6.1.tar.gz
.
File metadata
- Download URL: palantir-oauth-client-1.6.1.tar.gz
- Upload date:
- Size: 17.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.12 CPython/3.10.2 Linux/5.15.0-1056-aws
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 113241cb334bc19b2b5c17ad0a350ed32ba766d74155b1d074e68351e485538b |
|
MD5 | e5db1ec118ffbb7e06b48e8c1827d187 |
|
BLAKE2b-256 | ffc42416181b36c5a6e513bbdd97db1001ad9f60369a5ee45ca7d9f328296d2b |
File details
Details for the file palantir_oauth_client-1.6.1-py3-none-any.whl
.
File metadata
- Download URL: palantir_oauth_client-1.6.1-py3-none-any.whl
- Upload date:
- Size: 22.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.12 CPython/3.10.2 Linux/5.15.0-1056-aws
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9bb52919b0f141e8a36d677a45d32331dc22d4b1a1d7e5452ea836f66e4a0655 |
|
MD5 | 2ce46b5fa0b7c65ddfd2c16839c54981 |
|
BLAKE2b-256 | f030a56e2af8ced5390dc57bccfc502ddaf1f1993d2a2b840973c853d4b658b5 |