SecureBlackbox 2020 Python Edition

Questions / Feedback?

Authenticator Class

Properties   Methods   Events   Configuration Settings   Errors  

The Authenticator class specializes in user authentication.

Syntax

class secureblackbox.Authenticator

Remarks

Authenticator provides capabilities for implementing the authenticating party (as opposed to the one being authenticated) of the authentication protocol.

Authenticator can be used in a variety of authentication scenarios, ranging from simple password checks to complicated multi-factor variants. It also supports authentication via a SBB-own DC protocol, which makes it a good pair for DCAuth control.

In default configuration the component uses the attached database of users to handle authentication requests. The authentication flow can be altered if needed to match specific authentication requirements.

In Authenticator's terms, the authentication process is divided into a sequence of atomic steps. Each step is characterized by a user providing an authentication token - such as a password or PIN - and the authenticator validating that token. Each validation step may result in one of the following outcomes:

  • Authentication succeeded: the authentication has been completed with the positive outcome;
  • Authentication failed: the authentication process has failed, the user didn't provide enough evidence to confirm they are who they claim they are;
  • Further authentication is required: the authentication was partly successful, but the settings of the component or user details require further step(s) to be taken.

Use the following logic when integrating the Authenticator into your project:

  • Whenever you receive an authentication request from a user, call the start_auth method, passing the UserID as a parameter. This initiates the authentication procedure: the Authenticator control looks up the user in the users database and picks the first authentication method. It then returns the Further authentication is required result and stores the details of the first authentication step in auth_info property. Apart from the information about the authentication method that is to be performed during this step, auth_info also contains a > value, which accumulates parameters and progress of the user's authentication flow. You can save the state value on this stage, and restore it later when a response from the user is received. With that in mind, class is stateless; you can save the current authentication state in a database, and return to it from a different context.
  • Now that you have obtained Further authentication needed from start_auth, it's time to check the > and request the corresponding token from the user. For example, if the method is 'password', you may present the user with a password dialog.
  • Upon receiving a password (or other kind of authentication token) from the user, pass it to the continue_auth method, together with the state object that you saved on the preceding step. The component will process the token and come up with one of the three results given above, signifying the end of the first authentication step. If Further authentication is required result is returned, another authentication step needs to be performed (either because a multi-factor authentication is configured for this user, or because an alternative authentication method was chosen following failure of the previous attempt). If that is the case, follow the guidance for start_auth-initiated step above.

    Depending on the settings, many authentication steps may need to be performed, so your code may ultimately end up calling continue_auth many times.

class can be customized to use external user information sources instead of a predefined user database. on_auth_start, on_auth_verify, and on_auth_attempt_result events provide an opportunity for your code to intervene into the authentication process by defining your own authentication procedures and validating authentication tokens manually.

Property List


The following is the full list of the properties of the class with short descriptions. Click on the links for further details.

auth_info_auth_logContains the authentication log.
auth_info_auth_methodContains the current authentication method.
auth_info_auth_method_parsContains the authentication method parameters.
auth_info_completed_methodsContains a comma-separated list of completed authentication methods.
auth_info_last_auth_messageContains an uninterpreted authentication message to be displayed to the authenticating user.
auth_info_last_auth_resultContains the result of the last authentication token validation.
auth_info_remaining_methodsContains a comma-separated list of authentication methods yet to perform.
auth_info_stateContains a state of the overall authentication process.
auth_info_user_idReturns the ID of the user being authenticated, as passed to StartAuth .
blocked_cert_countThe number of records in the BlockedCert arrays.
blocked_cert_bytesReturns raw certificate data in DER format.
blocked_cert_handleAllows to get or set a 'handle', a unique identifier of the underlying property object.
cert_countThe number of records in the Cert arrays.
cert_bytesReturns raw certificate data in DER format.
cert_caIndicates whether the certificate has a CA capability (a setting in BasicConstraints extension).
cert_ca_key_idA unique identifier (fingerprint) of the CA certificate's private key.
cert_crl_distribution_pointsLocations of the CRL (Certificate Revocation List) distribution points used to check this certificate's validity.
cert_curveSpecifies the elliptic curve of the EC public key.
cert_fingerprintContains the fingerprint (a hash imprint) of this certificate.
cert_friendly_nameContains an associated alias (friendly name) of the certificate.
cert_handleAllows to get or set a 'handle', a unique identifier of the underlying property object.
cert_hash_algorithmSpecifies the hash algorithm to be used in the operations on the certificate (such as key signing) SB_HASH_ALGORITHM_SHA1 SHA1 SB_HASH_ALGORITHM_SHA224 SHA224 SB_HASH_ALGORITHM_SHA256 SHA256 SB_HASH_ALGORITHM_SHA384 SHA384 SB_HASH_ALGORITHM_SHA512 SHA512 SB_HASH_ALGORITHM_MD2 MD2 SB_HASH_ALGORITHM_MD4 MD4 SB_HASH_ALGORITHM_MD5 MD5 SB_HASH_ALGORITHM_RIPEMD160 RIPEMD160 SB_HASH_ALGORITHM_CRC32 CRC32 SB_HASH_ALGORITHM_SSL3 SSL3 SB_HASH_ALGORITHM_GOST_R3411_1994 GOST1994 SB_HASH_ALGORITHM_WHIRLPOOL WHIRLPOOL SB_HASH_ALGORITHM_POLY1305 POLY1305 SB_HASH_ALGORITHM_SHA3_224 SHA3_224 SB_HASH_ALGORITHM_SHA3_256 SHA3_256 SB_HASH_ALGORITHM_SHA3_384 SHA3_384 SB_HASH_ALGORITHM_SHA3_512 SHA3_512 SB_HASH_ALGORITHM_BLAKE2S_128 BLAKE2S_128 SB_HASH_ALGORITHM_BLAKE2S_160 BLAKE2S_160 SB_HASH_ALGORITHM_BLAKE2S_224 BLAKE2S_224 SB_HASH_ALGORITHM_BLAKE2S_256 BLAKE2S_256 SB_HASH_ALGORITHM_BLAKE2B_160 BLAKE2B_160 SB_HASH_ALGORITHM_BLAKE2B_256 BLAKE2B_256 SB_HASH_ALGORITHM_BLAKE2B_384 BLAKE2B_384 SB_HASH_ALGORITHM_BLAKE2B_512 BLAKE2B_512 SB_HASH_ALGORITHM_SHAKE_128 SHAKE_128 SB_HASH_ALGORITHM_SHAKE_256 SHAKE_256 SB_HASH_ALGORITHM_SHAKE_128_LEN SHAKE_128_LEN SB_HASH_ALGORITHM_SHAKE_256_LEN SHAKE_256_LEN .
cert_issuerThe common name of the certificate issuer (CA), typically a company name.
cert_issuer_rdnA collection of information, in the form of [OID, Value] pairs, uniquely identifying the certificate issuer.
cert_key_algorithmSpecifies the public key algorithm of this certificate.
cert_key_bitsReturns the length of the public key.
cert_key_fingerprintReturns a fingerprint of the public key contained in the certificate.
cert_key_usageIndicates the purposes of the key contained in the certificate, in the form of an OR'ed flag set.
cert_key_validReturns True if the certificate's key is cryptographically valid, and False otherwise.
cert_ocsp_locationsLocations of OCSP (Online Certificate Status Protocol) services that can be used to check this certificate's validity, as recorded by the CA.
cert_policy_i_dsContains identifiers (OIDs) of the applicable certificate policies.
cert_public_key_bytesContains the certificate's public key in DER format.
cert_self_signedIndicates whether the certificate is self-signed (root) or signed by an external CA.
cert_serial_numberReturns the certificate's serial number.
cert_sig_algorithmIndicates the algorithm that was used by the CA to sign this certificate.
cert_subjectThe common name of the certificate holder, typically an individual's name, a URL, an e-mail address, or a company name.
cert_subject_key_idContains a unique identifier (fingerprint) of the certificate's private key.
cert_subject_rdnA collection of information, in the form of [OID, Value] pairs, uniquely identifying the certificate holder (subject).
cert_valid_fromThe time point at which the certificate becomes valid, in UTC.
cert_valid_toThe time point at which the certificate expires, in UTC.
chain_validation_detailsThe details of a certificate chain validation outcome.
chain_validation_resultThe general outcome of a certificate chain validation routine. Use ChainValidationDetails to get information about the reasons that contributed to the validation result.
default_auth_methodsContains the list of default authentication methods.
external_crypto_custom_paramsCustom parameters to be passed to the signing service (uninterpreted).
external_crypto_dataAdditional data to be included in the async state and mirrored back by the requestor.
external_crypto_external_hash_calculationSpecifies whether the message hash is to be calculated at the external endpoint.
external_crypto_hash_algorithmSpecifies the request's signature hash algorithm.
external_crypto_key_idThe ID of the pre-shared key used for DC request authentication.
external_crypto_key_secretThe pre-shared key used for DC request authentication.
external_crypto_methodSpecifies the asynchronous signing method.
external_crypto_modeSpecifies the external cryptography mode.
external_crypto_public_key_algorithmProvide public key algorithm here if the certificate is not available on the pre-signing stage.
ignore_chain_validation_errorsMakes the class tolerant to chain validation errors.
known_cert_countThe number of records in the KnownCert arrays.
known_cert_bytesReturns raw certificate data in DER format.
known_cert_handleAllows to get or set a 'handle', a unique identifier of the underlying property object.
known_crl_countThe number of records in the KnownCRL arrays.
known_crl_bytesReturns raw CRL data in DER format.
known_crl_handleAllows to get or set a 'handle', a unique identifier of the underlying property object.
known_ocsp_countThe number of records in the KnownOCSP arrays.
known_ocsp_bytesBuffer containing raw OCSP response data.
known_ocsp_handleAllows to get or set a 'handle', a unique identifier of the underlying property object.
offline_modeSwitches the class to the offline mode.
proxy_addressThe IP address of the proxy server.
proxy_authenticationThe authentication type used by the proxy server.
proxy_passwordThe password to authenticate to the proxy server.
proxy_portThe port on the proxy server to connect to.
proxy_proxy_typeThe type of the proxy server.
proxy_request_headersContains HTTP request headers for WebTunnel and HTTP proxy.
proxy_response_bodyContains the HTTP or HTTPS (WebTunnel) proxy response body.
proxy_response_headersContains response headers received from an HTTP or HTTPS (WebTunnel) proxy server.
proxy_use_i_pv6Specifies whether IPv6 should be used when connecting through the proxy.
proxy_use_proxyEnables or disables proxy-driven connection.
proxy_usernameSpecifies the username credential for proxy authentication.
revocation_checkSpecifies the kind(s) of revocation check to perform.
signing_cert_bytesReturns raw certificate data in DER format.
signing_cert_handleAllows to get or set a 'handle', a unique identifier of the underlying property object.
socket_dns_modeSelects the DNS resolver to use: the class's (secure) built-in one, or the one provided by the system.
socket_dns_portSpecifies the port number to be used for sending queries to the DNS server.
socket_dns_query_timeoutThe timeout (in milliseconds) for each DNS query.
socket_dns_serversThe addresses of DNS servers to use for address resolution, separated by commas or semicolons.
socket_dns_total_timeoutThe timeout (in milliseconds) for the whole resolution process.
socket_incoming_speed_limitThe maximum number of bytes to read from the socket, per second.
socket_local_addressThe local network interface to bind the socket to.
socket_local_portThe local port number to bind the socket to.
socket_outgoing_speed_limitThe maximum number of bytes to write to the socket, per second.
socket_timeoutThe maximum period of waiting, in milliseconds, after which the socket operation is considered unsuccessful.
socket_use_i_pv6Enables or disables IP protocol version 6.
tls_auto_validate_certificatesSpecifies whether server-side TLS certificates should be validated automatically using internal validation rules.
tls_base_configurationSelects the base configuration for the TLS settings.
tls_ciphersuitesA list of ciphersuites separated with commas or semicolons.
tlsec_curvesDefines the elliptic curves to enable.
tls_force_resume_if_destination_changesWhether to force TLS session resumption when the destination address changes.
tls_pre_shared_identityDefines the identity used when the PSK (Pre-Shared Key) key-exchange mechanism is negotiated.
tls_pre_shared_keyContains the pre-shared for the PSK (Pre-Shared Key) key-exchange mechanism, encoded with base16.
tls_pre_shared_key_ciphersuiteDefines the ciphersuite used for PSK (Pre-Shared Key) negotiation.
tls_renegotiation_attack_prevention_modeSelects renegotiation attack prevention mechanism.
tls_revocation_checkSpecifies the kind(s) of revocation check to perform.
tlsssl_optionsVarious SSL (TLS) protocol options, set of cssloExpectShutdownMessage 0x001 Wait for the close-notify message when shutting down the connection cssloOpenSSLDTLSWorkaround 0x002 (DEPRECATED) Use a DTLS version workaround when talking to very old OpenSSL versions cssloDisableKexLengthAlignment 0x004 Do not align the client-side PMS by the RSA modulus size.
tlstls_modeSpecifies the TLS mode to use.
tls_use_extended_master_secretEnables Extended Master Secret Extension, as defined in RFC 7627.
tls_use_session_resumptionEnables or disables TLS session resumption capability.
tls_versionsTh SSL/TLS versions to enable by default.
trusted_cert_countThe number of records in the TrustedCert arrays.
trusted_cert_bytesReturns raw certificate data in DER format.
trusted_cert_handleAllows to get or set a 'handle', a unique identifier of the underlying property object.
user_countThe number of records in the User arrays.
user_associated_dataContains the user's Associated Data when SSH AEAD (Authenticated Encryption with Associated Data) algorithm is used.
user_base_pathBase path for this user in the server's file system.
user_certContains the user's certificate.
user_dataContains uninterpreted user-defined data that should be associated with the user account, such as comments or custom settings.
user_handleAllows to get or set a 'handle', a unique identifier of the underlying property object.
user_hash_algorithmSpecifies the hash algorithm used to generate TOTP (Time-based One-Time Passwords) passwords for this user.
user_incoming_speed_limitSpecifies the incoming speed limit for this user.
user_otp_algorithmThe algorithm used to generate one-time passwords (OTP) for this user, either HOTP (Hash-based OTP) or TOTP (Time-based OTP).
user_otp_valueThe user's time interval (TOTP) or Counter (HOTP).
user_outgoing_speed_limitSpecifies the outgoing speed limit for this user.
user_passwordThe user's authentication password.
user_password_lenSpecifies the length of the user's OTP password.
user_shared_secretContains the user's secret key, which is essentially a shared secret between the client and server.
user_ssh_keyContains the user's SSH key.
user_usernameThe registered name (login) of the user.
validation_logContains the complete log of the certificate validation routine.
validation_momentThe time point at which signature validity is to be established.

Method List


The following is the full list of the methods of the class with short descriptions. Click on the links for further details.

configSets or retrieves a configuration setting.
continue_authCall this method to process an authentication token and proceed to the next authentication step.
start_authInitiates an authentication process.

Event List


The following is the full list of the events fired by the class with short descriptions. Click on the links for further details.

on_auth_attempt_resultReports the outcome of an authentication attempt.
on_auth_attempt_startSignifies the start of an authentication attempt.
on_auth_startSignifies the start of an authentication process.
on_auth_verifyRequests the application to validate an authentication token.
on_custom_auth_startReports the beginning of a custom authentication method.
on_errorReports information about errors during authentication.
on_notificationThis event notifies the application about an underlying control flow event.

Configuration Settings


The following is a list of configuration settings for the class with short descriptions. Click on the links for further details.

ForceCompleteChainValidationForTrustedWhether to continue with the full validation up to the root CA certificate for mid-level trust anchors.
IgnoreOCSPNoCheckExtensionWhether OCSP NoCheck extension should be ignored.
IgnoreSystemTrustWhether trusted Windows Certificate Stores should be treated as trusted.
ImplicitlyTrustSelfSignedCertificatesWhether to trust self-signed certificates.
PromoteLongOCSPResponsesWhether long OCSP responses are requested.
TolerateMinorChainIssuesWhether to tolerate minor chain issues.
UseMicrosoftCTLEnables or disables automatic use of Microsoft online certificate trust list.
UseSystemCertificatesEnables or disables the use of the system certificates.
CheckKeyIntegrityBeforeUseEnables or disable private key integrity check before use.
CookieCachingSpecifies whether a cookie cache should be used for HTTP(S) transports.
CookiesGets or sets local cookies for the class (supported for HTTPClient, RESTClient and SOAPClient only).
DefDeriveKeyIterationsSpecifies the default key derivation algorithm iteration count.
EnableClientSideSSLFFDHEEnables or disables finite field DHE key exchange support in TLS clients.
GlobalCookiesGets or sets global cookies for all the HTTP transports.
HttpUserAgentSpecifies the user agent name to be used by all HTTP clients.
LogDestinationSpecifies the debug log destination.
LogDetailsSpecifies the debug log details to dump.
LogFileSpecifies the debug log filename.
LogFiltersSpecifies the debug log filters.
LogFlushModeSpecifies the log flush mode.
LogLevelSpecifies the debug log level.
LogMaxEventCountSpecifies the maximum number of events to cache before further action is taken.
LogRotationModeSpecifies the log rotation mode.
MaxASN1BufferLengthSpecifies the maximal allowed length for ASN.1 primitive tag data.
MaxASN1TreeDepthSpecifies the maximal depth for processed ASN.1 trees.
OCSPHashAlgorithmSpecifies the hash algorithm to be used to identify certificates in OCSP requests.
UseOwnDNSResolverSpecifies whether the client classes should use own DNS resolver.
UseSharedSystemStoragesSpecifies whether the validation engine should use a global per-process copy of the system certificate stores.
UseSystemOAEPAndPSSEnforces or disables the use of system-driven RSA OAEP and PSS computations.
UseSystemRandomEnables or disables the use of the OS PRNG.

Copyright (c) 2022 /n software inc. - All rights reserved.
SecureBlackbox 2020 Python Edition - Version 20.0 [Build 8154]