an external API in your application? Used an Application to manage your twitter? − e.g. hottot, tweetdeck etc Linked your facebook and twiter account? How many applications have your password? Do you trust them all?
or API that requires authentication to access restricted data for a number of functions / methods Consumers who wish to access that particular API or Web Service and wish to use a standard method of authentication
known as “Consumer” e.g. your app Server where the service run Also known as “Service Provider” e.g. twitter, facebook Person using the service (on Server) Also known as “Resource Owner”
access token for the user Redirects user to provider with token in url Consumer wants to trade request token for access token Creates and returns a new request token User selects preferences and approves auth Provisional request token traded for access token Redirected back to consumer with request token Authroization Steps
granted by service provider − passed as a request parameter − same variable name (oauth_token) for − both request and access type tokens Token Secret − also granted by service provider − same variable name (oauth_token_secret) − for both request and access type tokens
(unless otherwise specified by service provider) − must be equal or greater than previous request oauth_nonce − random string per timestamp / request − attempt to stop replay attacks
following with a '&' − HTTP request method (e.g. GET) − HTTP url (endpoint url) − Normalized request parameters (sorted by name) Key − Encoded consumer secret and token secret separated by an '&'
signature base string Verify with Consumer's RSA public key Same signature base string as HMAC-SHA1 Still in development for most OAuth libraries
providers User has control over access and can easily revoke consumers and application privileges Track token usage and statistics Also there are many open source libraries available to implement both consumer and provider No Personal information is shared
based applications better OAuth 2.0 has dropped cryptography in favor of bearer tokens over SSL Signatures are less complicated in OAuth2.0 Access Tokens are short lived (refresh tokens are used to get new access tokens) Authorization Server and Service Server can be separated