MENU

Fun & Interesting

OAuth 2.0 - a dead simple explanation

Jan Goebel 29,000 1 year ago
Video Not Working? Fix It Now

X: https://twitter.com/_jgoebel Website: https://jangoebel.com 00:00 What is OAuth 2.0? 00:13 What problem does OAuth 2.0 solve? 02:04 OAuth 2.0 Client Registration 03:06 OAuth 2.0 Confidential vs. public clients 04:21 OAuth 2.0 Authorization Code Grant 06:43 OAuth 2.0 Access and Refresh Tokens and JWTs 08:03 OAuth 2.0 Grant types: client credentials grant, implicit grant, resource owner password grant, device grant 09:03 Outro OAuth 2.0 is an "authorization framework [that] allows third party applications to get limited access to an HTTP service" (RFC 6749). OAuth 2.0 is all about giving third party applications limited access to APIs. Prior to OAuth 2.0, the third party would have asked for the user's credentials and would have used these credentials on the respective API. OAuth 2.0 eliminates the need for password sharing by introducing a new entity called the OAuth 2.0 authorization server. The OAuth 2.0 authorization server issues access and refresh tokens to third party applications thereby eliminating the need of credential sharing. The third party application is called the client in OAuth terminology. The API the third party wants to get access to is called the resource server or the protected resource. Before a third party can get limited access to an API, it first needs to register itself with the OAuth 2.0 Authorization server. The third party application, the so called client, gets a client id upon registration with the OAuth 2.0 authorization server. If the client can keep data secret, then it will also obtain client credentials. The simplest form of a client credential would be a shared secret called the client secret. OAuth 2.0 also supports more sophisticated means auf authenticating against the OAuth 2.0 authorization server such as mutual TLS (mTLS). Once the client is registered, the client performs one of the OAuth flows that are also known as grant types. The most popular grant types are the OAuth 2.0 authorization code grant which orchestrates an approval flow between the resource owner, the OAuth 2.0 authorization server and the protected resource. Contrast this with the client credentials grant which is made for machine-to-machine communication. The resource owner password grant and the implicit grant are insecure according to the OAuth 2.0 Security best current practices and must not be used. Then there is also the OAuth 2.0 device grant which is built for devices that do not have a browser or where entering credentials is cumbersome such as Smart TVs. While the OAuth 2.0 RFC does not mandate the access and refresh tokens to be structured, in most deployments they are actually JSON Web Tokens (JWTs). This has the advantage that the protected resource can validate the signature of the token locally without having to make a REST call to the authorization server to check for the validity of the token. Picasso Artwork: https://www.freepik.com/free-vector/hand-drawn-picasso-style-illustration_29679617.htm Image by Freepick Artist: https://www.freepik.com/free-vector/artist-art-tools-set_3813261.htm Image by macrovector on Freepick Software Engineer: https://www.freepik.com/free-vector/binary-code-concept-illustration_15581993.htm Image by storyset on Freepick

Comment