Authentication
OAuth
- What is OAuth?
- an open-standard authorization protocol or framework
- Give an example of what using OAuth would look like.
- when visiting a website and it asks you to link to other website and that website authenticates you
-
How does OAuth work? What are the steps that it takes to authenticate the user?
- The first website connects to the second website on behalf of the user, using OAuth, providing the user’s verified identity.
- The second site generates a one-time token and a one-time secret unique to the transaction and parties involved.
- The first site gives this token and secret to the initiating user’s client software.
- The client’s software presents the request token and secret to their authorization provider (which may or may not be the second site)
- If not already authenticated to the authorization provider, the client may be asked to authenticate. After authentication, the client is asked to approve the authorization transaction to the second website.
- The user approves (or their software silently approves) a particular transaction type at the first website.
- The user is given an approved access token (notice it’s no longer a request token).
- The user gives the approved access token to the first website.
- The first website gives the access token to the second website as proof of authentication on behalf of the user.
- The second website lets the first website access their site on behalf of the user.
- The user sees a successfully completed transaction occurring.
-
OAuth is not the first authentication/authorization system to work this way on behalf of the end-user.
- What is OpenID?
- OpenId is about authentication for humans logging into machines
Authorization and Authentication flows
- What is the difference between authorization and authentication?
- authentication is the process of verifying who a user is
- authorization is the process of verifying what they have access to
- What is Authorization Code Flow?
- it exchanges an Authorization Code for a token
- What is Authorization Code Flow with Proof Key for Code Exchange (PKCE)?
- The PKCE-enhanced Authorization Code Flow introduces a Code Verifier created by the calling application that can be verified by the authorization server
- What is Implicit Flow with Form Post?
- The web app requests and obtains tokens through the front channel, without the need for secrets or extra backend calls
- What is Client Credentials Flow?
- in machine-to-machine apps they pass along their Client ID and Client Secret to authenticate themselves and get a token
- What is Device Authorization Flow?
- the device asks the user to go to a link on their computer or smartphone and authorize the device
- What is Resource Owner Password Flow?
- it requests that users provide credentials (username and password), typically using an interactive form