OAuth 1.0 was the first version of the OAuth protocol, and while it's mostly replaced by OAuth 2.0, it's still important to understand — especially if you work with legacy systems or APIs like Twitter's old API versions.

Let’s walk through the flow step by step and highlight how the Authorization Server figures out the user.


📘 Key Players (Same as OAuth 2.0)

Role Description
Resource Owner The user who owns the data
Client The application that wants access to the user's data
Authorization Server Handles login, permission, and tokens
Resource Server The API or server that stores the user’s data

🔁 OAuth 1.0 Flow (Step-by-Step)

OAuth 1.0 is two-legged and three-legged, but we’ll cover the three-legged flow, which involves the user (resource owner).


🧭 Step 1: Client Gets a Request Token

The client first sends a signed request to the Authorization Server to obtain a request token.

POST /oauth/request_token
Authorization: OAuth
    oauth_consumer_key="xyz",
    oauth_signature="...",
    oauth_callback="https://clientapp.com/callback"

✅ This token is not yet tied to a user — it's just the first handshake.


👤 Step 2: Redirect User to Authorization Server

GET /oauth/authorize?oauth_token=requestToken123

The client redirects the user to the Authorization Server with the request token.


🔐 Step 3: User Logs In and Grants Access

The user logs in and approves the request token.

➡️ At this point, the Authorization Server:

  • Authenticates the user (knows who they are)
  • Associates the request token with the user

✅ ✅ ✅ So this is when the Authorization Server knows whose data the client wants.


📜 Step 4: Server Sends User Back with a Verifier

After approval, the server redirects back with:

https://clientapp.com/callback?oauth_token=requestToken123&oauth_verifier=abc123

🔄 Step 5: Client Exchanges Request Token + Verifier for Access Token

POST /oauth/access_token
Authorization: OAuth
    oauth_consumer_key="xyz",
    oauth_token="requestToken123",
    oauth_verifier="abc123",
    oauth_signature="..."

The access token returned is now tied to:

  • The client
  • The user (because of login and approval)
  • The granted scopes (permissions)

🔓 Step 6: Client Accesses User’s Data

GET /api/profile
Authorization: OAuth oauth_token="accessToken456", oauth_signature="..."

The client uses the access token to request user data from the Resource Server.

✅ The token is linked to the user, so the Resource Server serves that user’s data.


🔐 How Does Auth Server Know the User?

In OAuth 1.0:

  • During Step 3, the user logs in and approves the request token.
  • The Authorization Server associates that token with the user.
  • The later access token is generated based on that association.

So again, the flow answers the question clearly:

The Authorization Server knows the user because they log in and grant access to the request token.


🔍 OAuth 1.0 vs OAuth 2.0 (TL;DR)

Feature OAuth 1.0 OAuth 2.0
Token Type Request + Access tokens Access + optional Refresh tokens
Signature Requirement HMAC-SHA1 signatures Optional (Bearer tokens)
Complexity More complex Simpler, more flexible
User Login & Consent Required to link request token Required to issue access token
Security Stronger with signatures Token can be bearer, needs HTTPS

✅ Conclusion

OAuth 1.0 may be older, but its flow was very secure due to request signing.

It knew whose data was being accessed because:

  • The user logged in
  • The user granted permission
  • The server linked the request token to the user

This is similar in principle to OAuth 2.0 — but with more cryptographic signatures and complexity.