pub trait IdmServerTransaction<'a> {
    type QsTransactionType: QueryServerTransaction<'a>;

    // Required methods
    fn get_qs_txn(&mut self) -> &mut Self::QsTransactionType;
    fn get_uat_validator_txn(&self) -> &JwsValidator;

    // Provided methods
    fn validate_and_parse_token_to_ident(
        &mut self,
        token: Option<&str>,
        ct: Duration
    ) -> Result<Identity, OperationError> { ... }
    fn validate_and_parse_token_to_uat(
        &mut self,
        token: Option<&str>,
        ct: Duration
    ) -> Result<UserAuthToken, OperationError> { ... }
    fn validate_and_parse_token_to_token(
        &mut self,
        token: Option<&str>,
        ct: Duration
    ) -> Result<Token, OperationError> { ... }
    fn validate_and_parse_uat(
        &self,
        token: Option<&str>,
        ct: Duration
    ) -> Result<UserAuthToken, OperationError> { ... }
    fn check_oauth2_account_uuid_valid(
        &mut self,
        uuid: Uuid,
        session_id: Uuid,
        parent_session_id: Uuid,
        iat: i64,
        ct: Duration
    ) -> Result<Option<Arc<Entry<EntrySealed, EntryCommitted>>>, OperationError> { ... }
    fn process_uat_to_identity(
        &mut self,
        uat: &UserAuthToken,
        ct: Duration
    ) -> Result<Identity, OperationError> { ... }
    fn process_apit_to_identity(
        &mut self,
        apit: &ApiToken,
        entry: Arc<EntrySealedCommitted>,
        ct: Duration
    ) -> Result<Identity, OperationError> { ... }
    fn validate_ldap_session(
        &mut self,
        session: &LdapSession,
        ct: Duration
    ) -> Result<Identity, OperationError> { ... }
    fn validate_and_parse_sync_token_to_ident(
        &mut self,
        token: Option<&str>,
        ct: Duration
    ) -> Result<Identity, OperationError> { ... }
}

Required Associated Types§

Required Methods§

source

fn get_qs_txn(&mut self) -> &mut Self::QsTransactionType

source

fn get_uat_validator_txn(&self) -> &JwsValidator

Provided Methods§

source

fn validate_and_parse_token_to_ident( &mut self, token: Option<&str>, ct: Duration ) -> Result<Identity, OperationError>

This is the preferred method to transform and securely verify a token into an identity that can be used for operations and access enforcement. This function is aware of the various classes of tokens that may exist, and can appropriately check them.

The primary method of verification selection is the use of the KID parameter that we internally sign with. We can use this to select the appropriate token type and validation method.

source

fn validate_and_parse_token_to_uat( &mut self, token: Option<&str>, ct: Duration ) -> Result<UserAuthToken, OperationError>

source

fn validate_and_parse_token_to_token( &mut self, token: Option<&str>, ct: Duration ) -> Result<Token, OperationError>

source

fn validate_and_parse_uat( &self, token: Option<&str>, ct: Duration ) -> Result<UserAuthToken, OperationError>

source

fn check_oauth2_account_uuid_valid( &mut self, uuid: Uuid, session_id: Uuid, parent_session_id: Uuid, iat: i64, ct: Duration ) -> Result<Option<Arc<Entry<EntrySealed, EntryCommitted>>>, OperationError>

source

fn process_uat_to_identity( &mut self, uat: &UserAuthToken, ct: Duration ) -> Result<Identity, OperationError>

For any event/operation to proceed, we need to attach an identity to the event for security and access processing. When that event is externally triggered via one of our various api layers, we process some type of account token into this identity. In the current server this is the UserAuthToken. For a UserAuthToken to be provided it MUST have been cryptographically verified meaning it is now a trusted source of data that we previously issued.

This is the function that is responsible for converting that UAT into something we can pin access controls and other limits and references to. This is why it is the location where validity windows are checked and other relevant session information is injected.

source

fn process_apit_to_identity( &mut self, apit: &ApiToken, entry: Arc<EntrySealedCommitted>, ct: Duration ) -> Result<Identity, OperationError>

source

fn validate_ldap_session( &mut self, session: &LdapSession, ct: Duration ) -> Result<Identity, OperationError>

source

fn validate_and_parse_sync_token_to_ident( &mut self, token: Option<&str>, ct: Duration ) -> Result<Identity, OperationError>

Implementors§