pub trait AuthSession: Send + Sync {
// Required methods
fn access_token<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = CirrusResult<Cow<'_, str>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn instance_url(&self) -> &str;
// Provided method
fn invalidate<'life0, 'life1, 'async_trait>(
&'life0 self,
stale_token: &'life1 str,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait { ... }
}Expand description
Abstraction over a Salesforce authentication session.
An implementation holds whatever credentials the chosen flow needs, produces a bearer access token on demand (refreshing if necessary), and reports the instance URL that REST requests should target.
The trait is Send + Sync and uses async_trait to remain
dyn-compatible — the client stores Arc<dyn AuthSession> so handlers
don’t care which flow was configured.
Required Methods§
Sourcefn access_token<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = CirrusResult<Cow<'_, str>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn access_token<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = CirrusResult<Cow<'_, str>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Returns a valid bearer access token. Implementations may refresh
expired tokens transparently here; that is why the method is async.
Sourcefn instance_url(&self) -> &str
fn instance_url(&self) -> &str
Returns the instance URL for REST requests, e.g.
https://my-org.my.salesforce.com. No trailing slash.
Provided Methods§
Sourcefn invalidate<'life0, 'life1, 'async_trait>(
&'life0 self,
stale_token: &'life1 str,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn invalidate<'life0, 'life1, 'async_trait>(
&'life0 self,
stale_token: &'life1 str,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Invalidates a cached token that the SDK has determined is no
longer valid (typically because Salesforce returned 401
INVALID_SESSION_ID when it was used).
The next access_token call should mint
a fresh token. The stale_token parameter lets implementations
compare-and-swap — only clear the cache if the cached value
still matches what the caller actually used. This avoids
blowing away a newer token that another concurrent task may
have refreshed in the meantime.
Default impl is a no-op for static or stateless sessions
(crate::auth::StaticTokenAuth) where there is nothing to
invalidate. Stateful flows (crate::auth::JwtAuth,
crate::auth::RefreshTokenAuth,
crate::auth::ClientCredentialsAuth) override to clear
their cached token.
stale_token is borrowed for the duration of the call only —
implementations should compare it against their cached value
and not retain it.