RFC 6749 / START HERE
OAuth 2.0, before the details
OAuth 2.0 authorization framework
OAuth is a framework for delegated authorization: giving an app limited permission to use another service. It is not, by itself, a login identity protocol.
The idea in one picture
You approve permission
The app gets an access token
The service allows limited access
A simplified picture of the idea; the chapters explain the actual mechanisms.
Why it exists
Sharing your password gives an app too much power. OAuth separates your account credentials from the permission the app receives.
A familiar example
A calendar app asks permission to read your calendar. You approve at the calendar service, which gives the app an access token instead of your password.
Helpful background
You can start here without reading another RFC. If these ideas are unfamiliar, these short introductions may help.
What you’ll learn next
Begin with chapter one, or choose a topic.
- Four roles, one delegationAn app receives limited authority instead of the resource owner’s password.→
- Public and confidential clientsAn app’s ability to keep credentials confidential determines its client type.→
- Two endpoints, two channelsThe browser requests permission. The client exchanges grants at the token endpoint.→
- Authorization code grantA short-lived code travels through the browser; tokens come from the token endpoint.→
- Implicit grant: historical behaviorThe original framework allowed the authorization response itself to deliver an access token.→
- Password grant: now prohibitedThe original password grant passed resource-owner credentials through the client. Later guidance prohibits it.→
- Client credentials and extension grantsA client can obtain access on its own behalf, without an interactive resource-owner redirect.→
- Token responses and failuresA successful token response describes the credential. An error response must not be mistaken for one.→
- Refresh without another promptA refresh token returns to the authorization server, never to the resource server as an access credential.→
- Scope and protected resourcesThe client asks for privileges; the server decides what it actually grants.→
- Native apps and security boundariesThe framework’s original native-app choices and TLS advice were narrowed by subsequent security RFCs.→
This introduction explains RFC 6749 (2012). Read the original RFC ↗