Trait kanidmd_lib::idm::server::IdmServerTransaction
source · pub trait IdmServerTransaction<'a> {
type QsTransactionType: QueryServerTransaction<'a>;
fn get_qs_txn(&mut self) -> &mut Self::QsTransactionType;
fn get_uat_validator_txn(&self) -> &JwsValidator;
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§
fn get_qs_txn(&mut self) -> &mut Self::QsTransactionType
fn get_uat_validator_txn(&self) -> &JwsValidator
Provided Methods§
sourcefn validate_and_parse_token_to_ident(
&mut self,
token: Option<&str>,
ct: Duration
) -> Result<Identity, OperationError>
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.
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>
sourcefn process_uat_to_identity(
&mut self,
uat: &UserAuthToken,
ct: Duration
) -> Result<Identity, OperationError>
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.