pub trait AuthAdapter:
Debug
+ Send
+ Sync {
Show 52 methods
// Required methods
fn validate_access_token<'life0, 'life1, 'async_trait>(
&'life0 self,
tn_id: TnId,
token: &'life1 str,
) -> Pin<Box<dyn Future<Output = ClResult<AuthCtx>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn read_id_tag<'life0, 'async_trait>(
&'life0 self,
tn_id: TnId,
) -> Pin<Box<dyn Future<Output = ClResult<Box<str>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn read_tn_id<'life0, 'life1, 'async_trait>(
&'life0 self,
id_tag: &'life1 str,
) -> Pin<Box<dyn Future<Output = ClResult<TnId>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn read_tenant<'life0, 'life1, 'async_trait>(
&'life0 self,
id_tag: &'life1 str,
) -> Pin<Box<dyn Future<Output = ClResult<AuthProfile>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn create_tenant_registration<'life0, 'life1, 'async_trait>(
&'life0 self,
email: &'life1 str,
) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn create_tenant<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
id_tag: &'life1 str,
data: CreateTenantData<'life2>,
) -> Pin<Box<dyn Future<Output = ClResult<TnId>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait;
fn delete_tenant<'life0, 'life1, 'async_trait>(
&'life0 self,
id_tag: &'life1 str,
) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn list_tenants<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
opts: &'life1 ListTenantsOptions<'life2>,
) -> Pin<Box<dyn Future<Output = ClResult<Vec<TenantListItem>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait;
fn create_tenant_login<'life0, 'life1, 'async_trait>(
&'life0 self,
id_tag: &'life1 str,
) -> Pin<Box<dyn Future<Output = ClResult<AuthLogin>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn check_tenant_password<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
id_tag: &'life1 str,
password: &'life2 str,
) -> Pin<Box<dyn Future<Output = ClResult<AuthLogin>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait;
fn update_tenant_password<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
id_tag: &'life1 str,
password: &'life2 str,
) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait;
fn update_idp_api_key<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
id_tag: &'life1 str,
api_key: &'life2 str,
) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait;
fn create_cert<'life0, 'life1, 'async_trait>(
&'life0 self,
cert_data: &'life1 CertData,
) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn read_cert_by_tn_id<'life0, 'async_trait>(
&'life0 self,
tn_id: TnId,
) -> Pin<Box<dyn Future<Output = ClResult<CertData>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn read_cert_by_id_tag<'life0, 'life1, 'async_trait>(
&'life0 self,
id_tag: &'life1 str,
) -> Pin<Box<dyn Future<Output = ClResult<CertData>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn read_cert_by_domain<'life0, 'life1, 'async_trait>(
&'life0 self,
domain: &'life1 str,
) -> Pin<Box<dyn Future<Output = ClResult<CertData>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn list_all_certs<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = ClResult<Vec<CertData>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn list_tenants_needing_cert_renewal<'life0, 'async_trait>(
&'life0 self,
renewal_days: u32,
) -> Pin<Box<dyn Future<Output = ClResult<Vec<(TnId, Box<str>)>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn list_profile_keys<'life0, 'async_trait>(
&'life0 self,
tn_id: TnId,
) -> Pin<Box<dyn Future<Output = ClResult<Vec<AuthKey>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn read_profile_key<'life0, 'life1, 'async_trait>(
&'life0 self,
tn_id: TnId,
key_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = ClResult<AuthKey>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn create_profile_key<'life0, 'async_trait>(
&'life0 self,
tn_id: TnId,
expires_at: Option<Timestamp>,
) -> Pin<Box<dyn Future<Output = ClResult<AuthKey>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn create_access_token<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
tn_id: TnId,
data: &'life1 AccessToken<&'life2 str>,
) -> Pin<Box<dyn Future<Output = ClResult<Box<str>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait;
fn create_action_token<'life0, 'async_trait>(
&'life0 self,
tn_id: TnId,
data: CreateAction,
) -> Pin<Box<dyn Future<Output = ClResult<Box<str>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn create_proxy_token<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
tn_id: TnId,
id_tag: &'life1 str,
roles: &'life2 [Box<str>],
) -> Pin<Box<dyn Future<Output = ClResult<Box<str>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait;
fn verify_access_token<'life0, 'life1, 'async_trait>(
&'life0 self,
token: &'life1 str,
) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn read_vapid_key<'life0, 'async_trait>(
&'life0 self,
tn_id: TnId,
) -> Pin<Box<dyn Future<Output = ClResult<KeyPair>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn read_vapid_public_key<'life0, 'async_trait>(
&'life0 self,
tn_id: TnId,
) -> Pin<Box<dyn Future<Output = ClResult<Box<str>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn create_vapid_key<'life0, 'async_trait>(
&'life0 self,
tn_id: TnId,
) -> Pin<Box<dyn Future<Output = ClResult<KeyPair>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn update_vapid_key<'life0, 'life1, 'async_trait>(
&'life0 self,
tn_id: TnId,
key: &'life1 KeyPair,
) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn read_var<'life0, 'life1, 'async_trait>(
&'life0 self,
tn_id: TnId,
var: &'life1 str,
) -> Pin<Box<dyn Future<Output = ClResult<Box<str>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn update_var<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
tn_id: TnId,
var: &'life1 str,
value: &'life2 str,
) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait;
fn list_webauthn_credentials<'life0, 'async_trait>(
&'life0 self,
tn_id: TnId,
) -> Pin<Box<dyn Future<Output = ClResult<Box<[Webauthn<'_>]>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn read_webauthn_credential<'life0, 'life1, 'async_trait>(
&'life0 self,
tn_id: TnId,
credential_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = ClResult<Webauthn<'_>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn create_webauthn_credential<'life0, 'life1, 'async_trait>(
&'life0 self,
tn_id: TnId,
data: &'life1 Webauthn<'_>,
) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn update_webauthn_credential_counter<'life0, 'life1, 'async_trait>(
&'life0 self,
tn_id: TnId,
credential_id: &'life1 str,
counter: u32,
) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn delete_webauthn_credential<'life0, 'life1, 'async_trait>(
&'life0 self,
tn_id: TnId,
credential_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn create_api_key<'life0, 'life1, 'async_trait>(
&'life0 self,
tn_id: TnId,
opts: CreateApiKeyOptions<'life1>,
) -> Pin<Box<dyn Future<Output = ClResult<CreatedApiKey>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn validate_api_key<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
) -> Pin<Box<dyn Future<Output = ClResult<ApiKeyValidation>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn list_api_keys<'life0, 'async_trait>(
&'life0 self,
tn_id: TnId,
) -> Pin<Box<dyn Future<Output = ClResult<Vec<ApiKeyInfo>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn read_api_key<'life0, 'async_trait>(
&'life0 self,
tn_id: TnId,
key_id: i64,
) -> Pin<Box<dyn Future<Output = ClResult<ApiKeyInfo>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn update_api_key<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
tn_id: TnId,
key_id: i64,
name: Option<&'life1 str>,
scopes: Option<&'life2 str>,
expires_at: Option<Timestamp>,
) -> Pin<Box<dyn Future<Output = ClResult<ApiKeyInfo>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait;
fn delete_api_key<'life0, 'async_trait>(
&'life0 self,
tn_id: TnId,
key_id: i64,
) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn cleanup_expired_api_keys<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = ClResult<u32>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn cleanup_expired_verification_codes<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = ClResult<u32>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn create_proxy_site<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
data: &'life1 CreateProxySiteData<'life2>,
) -> Pin<Box<dyn Future<Output = ClResult<ProxySiteData>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait;
fn read_proxy_site<'life0, 'async_trait>(
&'life0 self,
site_id: i64,
) -> Pin<Box<dyn Future<Output = ClResult<ProxySiteData>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn read_proxy_site_by_domain<'life0, 'life1, 'async_trait>(
&'life0 self,
domain: &'life1 str,
) -> Pin<Box<dyn Future<Output = ClResult<ProxySiteData>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn update_proxy_site<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
site_id: i64,
data: &'life1 UpdateProxySiteData<'life2>,
) -> Pin<Box<dyn Future<Output = ClResult<ProxySiteData>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait;
fn delete_proxy_site<'life0, 'async_trait>(
&'life0 self,
site_id: i64,
) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn list_proxy_sites<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = ClResult<Vec<ProxySiteData>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn update_proxy_site_cert<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
site_id: i64,
cert: &'life1 str,
key: &'life2 str,
expires_at: Timestamp,
) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait;
fn list_proxy_sites_needing_cert_renewal<'life0, 'async_trait>(
&'life0 self,
renewal_days: u32,
) -> Pin<Box<dyn Future<Output = ClResult<Vec<ProxySiteData>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
}Expand description
A Cloudillo auth adapter
Every AuthAdapter implementation is required to implement this trait.
An AuthAdapter is responsible for storing and managing all sensitive data used for
authentication and authorization.
Required Methodsยง
Sourcefn validate_access_token<'life0, 'life1, 'async_trait>(
&'life0 self,
tn_id: TnId,
token: &'life1 str,
) -> Pin<Box<dyn Future<Output = ClResult<AuthCtx>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn validate_access_token<'life0, 'life1, 'async_trait>(
&'life0 self,
tn_id: TnId,
token: &'life1 str,
) -> Pin<Box<dyn Future<Output = ClResult<AuthCtx>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Validates an access token and returns the user context
Sourcefn read_id_tag<'life0, 'async_trait>(
&'life0 self,
tn_id: TnId,
) -> Pin<Box<dyn Future<Output = ClResult<Box<str>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn read_id_tag<'life0, 'async_trait>(
&'life0 self,
tn_id: TnId,
) -> Pin<Box<dyn Future<Output = ClResult<Box<str>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
ยงProfiles
Reads the ID tag of the given tenant, referenced by its ID
Sourcefn read_tn_id<'life0, 'life1, 'async_trait>(
&'life0 self,
id_tag: &'life1 str,
) -> Pin<Box<dyn Future<Output = ClResult<TnId>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn read_tn_id<'life0, 'life1, 'async_trait>(
&'life0 self,
id_tag: &'life1 str,
) -> Pin<Box<dyn Future<Output = ClResult<TnId>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Reads the ID the given tenant, referenced by its ID tag
Sourcefn read_tenant<'life0, 'life1, 'async_trait>(
&'life0 self,
id_tag: &'life1 str,
) -> Pin<Box<dyn Future<Output = ClResult<AuthProfile>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn read_tenant<'life0, 'life1, 'async_trait>(
&'life0 self,
id_tag: &'life1 str,
) -> Pin<Box<dyn Future<Output = ClResult<AuthProfile>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Reads a tenant profile
Sourcefn create_tenant_registration<'life0, 'life1, 'async_trait>(
&'life0 self,
email: &'life1 str,
) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn create_tenant_registration<'life0, 'life1, 'async_trait>(
&'life0 self,
email: &'life1 str,
) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Creates a tenant registration
Sourcefn create_tenant<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
id_tag: &'life1 str,
data: CreateTenantData<'life2>,
) -> Pin<Box<dyn Future<Output = ClResult<TnId>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn create_tenant<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
id_tag: &'life1 str,
data: CreateTenantData<'life2>,
) -> Pin<Box<dyn Future<Output = ClResult<TnId>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Creates a new tenant
Sourcefn delete_tenant<'life0, 'life1, 'async_trait>(
&'life0 self,
id_tag: &'life1 str,
) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn delete_tenant<'life0, 'life1, 'async_trait>(
&'life0 self,
id_tag: &'life1 str,
) -> Pin<Box<dyn Future<Output = ClResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Deletes a tenant
Sourcefn list_tenants<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
opts: &'life1 ListTenantsOptions<'life2>,
) -> Pin<Box<dyn Future<Output = ClResult<Vec<TenantListItem>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn list_tenants<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
opts: &'life1 ListTenantsOptions<'life2>,
) -> Pin<Box<dyn Future<Output = ClResult<Vec<TenantListItem>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Lists all tenants (for admin use)