So these days I was reading about OpenID
and OAuth2
. I've seen some questions (this and this), but from what I've read you can use OAuth
and for authentication, not just for authorization. On the second question, I've read this:
If you have an account (with some private resources) in a website, you can log in with username/password couple. If an application would like to get some private resources, and if you don't want to give them your username/password, use OAuth.
But if you want to log in into multiple websites with a unique account, use OpenID.
This raised more confusions (Dominick Baier said in one of his presentation that if you haven't heared about OAuth2
these years, you were living in a cave for the last years, so it seems this was my case): If I have many webservices (API's) and if I have an STS
service to request tokens for all the API's then I am using OpenID
? Is OAuth
is not scalable to extend the authorization to multiple sites using a single STS service?
When you try to explain me, please consider that I haven't implemented an authentication or authorization process before.
You are right: lot of authorization servers based on OAuth2 provides a way to authenticate. But OAuth2 is not designed for that purpose. In an OAuth2 context, the client has just an access token to retrieve/manage resources on a resource server. It knows nothing about the resource owner.
That is why the OpenID Connect protocol has been created. It works on top of the OAuth2 Framework protocol and allows the client to get information about the resource owner.
I recommend you to look at this very interesting talk (start at 4:44). This video helped me a lot to understand the purpose of each token. I hope it will help you too.