public final class DownscopedCredentials extends OAuth2Credentials
To downscope permissions you must define a CredentialAccessBoundary
which specifies
the upper bound of permissions that the credential can access. You must also provide a source
credential which will be used to acquire the downscoped credential.
Usage:
GoogleCredentials sourceCredentials = GoogleCredentials.getApplicationDefault()
.createScoped("https://www.googleapis.com/auth/cloud-platform");
CredentialAccessBoundary.AccessBoundaryRule rule =
CredentialAccessBoundary.AccessBoundaryRule.newBuilder()
.setAvailableResource(
"//storage.googleapis.com/projects/_/buckets/bucket")
.addAvailablePermission("inRole:roles/storage.objectViewer")
.build();
DownscopedCredentials downscopedCredentials =
DownscopedCredentials.newBuilder()
.setSourceCredential(sourceCredentials)
.setCredentialAccessBoundary(
CredentialAccessBoundary.newBuilder().addRule(rule).build())
.build();
AccessToken accessToken = downscopedCredentials.refreshAccessToken();
OAuth2Credentials credentials = OAuth2Credentials.create(accessToken);
Storage storage =
StorageOptions.newBuilder().setCredentials(credentials).build().getService();
Blob blob = storage.get(BlobId.of("bucket", "object"));
System.out.printf("Blob %s retrieved.", blob.getBlobId());
Note that OAuth2CredentialsWithRefresh
can instead be used to consume the downscoped
token, allowing for automatic token refreshes by providing a OAuth2CredentialsWithRefresh.OAuth2RefreshHandler
.Modifier and Type | Class and Description |
---|---|
static class |
DownscopedCredentials.Builder |
OAuth2Credentials.CredentialsChangedListener
Modifier and Type | Method and Description |
---|---|
CredentialAccessBoundary |
getCredentialAccessBoundary() |
GoogleCredentials |
getSourceCredentials() |
static DownscopedCredentials.Builder |
newBuilder() |
AccessToken |
refreshAccessToken()
Method to refresh the access token according to the specific type of credentials.
|
addChangeListener, create, equals, getAccessToken, getAdditionalHeaders, getAuthenticationType, getFromServiceLoader, getRequestMetadata, getRequestMetadata, getRequestMetadataInternal, hashCode, hasRequestMetadata, hasRequestMetadataOnly, newInstance, refresh, refreshIfExpired, removeChangeListener, toBuilder, toString
blockingGetToCallback, getRequestMetadata
public AccessToken refreshAccessToken() throws IOException
OAuth2Credentials
Throws IllegalStateException if not overridden since direct use of OAuth2Credentials is only for temporary or non-refreshing access tokens.
refreshAccessToken
in class OAuth2Credentials
IOException
public GoogleCredentials getSourceCredentials()
public CredentialAccessBoundary getCredentialAccessBoundary()
public static DownscopedCredentials.Builder newBuilder()
Copyright © 2023 Google. All rights reserved.