pub struct ServiceAccountTokenCredentialProvider { /* private fields */ }Expand description
Exchanges a service-account credential for an OAuth access token.
The provider returns a token-only Credential with a non-optional absolute
expiration and preserves the source service account email as signer identity.
This makes service-account JSON loaded by providers such as
super::FileCredentialProvider usable as the source of a Google credential
granter without requiring the host application to implement the JWT bearer
exchange.
The provider performs an OAuth exchange on every call. Cache and refresh
behavior remains owned by the outer reqsign_core::Signer or
reqsign_core::Granter. It is not inserted into the default credential
provider chain.
§Example
use reqsign_core::{Context, Granter};
use reqsign_google::{
CredentialAccessBoundaryGrant, CredentialAccessBoundaryPermissions,
FileCredentialProvider, ServerSideCredentialAccessBoundaryGranter,
ServiceAccountTokenCredentialProvider,
};
let source = ServiceAccountTokenCredentialProvider::from_provider(
FileCredentialProvider::new("/path/to/service-account.json"),
);
let grant = CredentialAccessBoundaryGrant::for_object_prefix(
"example-bucket",
"customer-a/",
CredentialAccessBoundaryPermissions::OBJECT_VIEWER,
);
let credential = Granter::new(
context,
source,
ServerSideCredentialAccessBoundaryGranter::new(grant),
)
.grant(None)
.await?;Implementations§
Source§impl ServiceAccountTokenCredentialProvider
impl ServiceAccountTokenCredentialProvider
Sourcepub fn new(service_account: ServiceAccount) -> Self
pub fn new(service_account: ServiceAccount) -> Self
Create a provider bound to one service account.
Sourcepub fn from_provider(
provider: impl ProvideCredential<Credential = Credential> + 'static,
) -> Self
pub fn from_provider( provider: impl ProvideCredential<Credential = Credential> + 'static, ) -> Self
Create a provider that loads its service account from another provider.
None from the source provider is preserved. A returned credential must
contain a valid service account; other credential variants are rejected
before the OAuth request is sent.
Sourcepub fn with_scope(self, scope: impl Into<String>) -> Self
pub fn with_scope(self, scope: impl Into<String>) -> Self
Set the OAuth scope.
This value takes precedence over GOOGLE_SCOPE. When neither is set,
the Google Cloud platform scope is used.
Trait Implementations§
Source§impl ProvideCredential for ServiceAccountTokenCredentialProvider
impl ProvideCredential for ServiceAccountTokenCredentialProvider
Source§type Credential = Credential
type Credential = Credential
Source§async fn provide_credential(
&self,
ctx: &Context,
) -> Result<Option<Self::Credential>>
async fn provide_credential( &self, ctx: &Context, ) -> Result<Option<Self::Credential>>
Auto Trait Implementations§
impl !RefUnwindSafe for ServiceAccountTokenCredentialProvider
impl !UnwindSafe for ServiceAccountTokenCredentialProvider
impl Freeze for ServiceAccountTokenCredentialProvider
impl Send for ServiceAccountTokenCredentialProvider
impl Sync for ServiceAccountTokenCredentialProvider
impl Unpin for ServiceAccountTokenCredentialProvider
impl UnsafeUnpin for ServiceAccountTokenCredentialProvider
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
impl<T> MaybeSend for Twhere
T: Send,
Source§impl<T> ProvideCredentialDyn for Twhere
T: ProvideCredential + ?Sized,
impl<T> ProvideCredentialDyn for Twhere
T: ProvideCredential + ?Sized,
Source§type Credential = <T as ProvideCredential>::Credential
type Credential = <T as ProvideCredential>::Credential
Source§fn provide_credential_dyn<'a>(
&'a self,
ctx: &'a Context,
) -> Pin<Box<dyn Future<Output = Result<Option<<T as ProvideCredentialDyn>::Credential>, Error>> + Send + 'a>>
fn provide_credential_dyn<'a>( &'a self, ctx: &'a Context, ) -> Pin<Box<dyn Future<Output = Result<Option<<T as ProvideCredentialDyn>::Credential>, Error>> + Send + 'a>>
ProvideCredential::provide_credential.