Authentication Flashcards
Authentication
The process of verification that an individual or entity is who they/it claims to be.
Authentication Factors
- Knowledge.
- Ownership.
- Inherence.
Knowledge Authentication Factors
Something the user Knows:
Password, PIN, Security Question.
Ownership Authentication Factors
Something the user has:
Wrist band, Credit Card, ID, Security Token.
Inherence Authentication Factors
Something that the user is:
Fingerprint, retinal pattern, facial recognition.
Entropy
Is a measure of how unpredictable a password is based on the selection process. Entropy is not a measure of the password itself, but what it could have been. The higher the Entropy the stronger the password.
Password Rules
- Password must have 3 of the following 4 complexity rules: at least 1 upper case character, at least 1 lower case character, at least 1 digit, at least 1 special character.
- At least 10 characters.
- Set maximum length, current recommendation is 128 characters.
- Not more than 2 identical sequential characters.
Authentication Process
- Credentials only transported by POST using TLS (HTTPS).
- Error messages should be generic and not identify the source of the failure.
- Prevent Brute Force Attacks.
JWT (JSON Web Tokens)
On login, the server generates a Secure Token with a JSON payload and a signature.
Claim
The payload containing information about the user, when it expires, and what the user is allowed to do (Authorizations).
Parts of a JWT Token
- Header.
- Payload.
- Signature.
Header JWT Token
Contains the Algorithm used to generate the Token and the type of Token generated
Payload JWT Token
Contains the user’s “claim”. Who they are and what they can do.
- sub (Subject) - whom the token is for (often the username).
- auth (Authorities/Roles) - What the user is authorized to do in the application.
- exp (Expires) - Timestamp of when the token expires.
Signature JWT Token
Contains information the API server can use to verify that the JWT token is valid.
Authorization
Is the process of giving users to access specific resources or functionality in an application. Authorities or Access Controls determine what privileges a user has within an application.