OpenID 与 Oauth(v1 & v2) 有何不同?
我注意到所有大型网站都使用 Openid
而不是 Oauth
。
我为 Google
和 Facebook
实现了 oauth
。
我的要求:
- 使用 Google / Facebook 对用户进行身份验证
- 管理我网站上用户的简单用户配置文件,从 Google/Facebook 预先填充。
我应该选择什么 Oauth
或 Openid
?
何时遵循oauth
?
I have noticed that all the big websites are using Openid
instead of Oauth
.
I have my implementation of oauth
for both Google
and Facebook
.
My requirement :
- Authenticate the users with Google / Facebook
- Manage simple user profiles for the users on my website, pre-populated from Google/Facebook.
What should I go for Oauth
or Openid
?
When to follow oauth
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
它们用于不同的目标。
OpenID 用于验证您网站上的SomeUser,向其他网站询问用户身份的证明。
OAuth 用于授予 SomeOtherParty(例如其他网站或应用程序)代表 SomeUser 在您的网站上执行某些操作(这意味着 SomeUser > 已经在您的网站上以某种方式进行了身份验证)。
对于作者的请求,还有一些评论:
您不能选择“OAuth 对用户进行身份验证”,因为 OAuth 不是用户身份验证协议(尽管其名称中包含“auth”)。
借助 OpenID,您几乎可以使用任何 OpenID 提供商对用户进行身份验证,而无需对代码进行任何修改。
如果您选择使用 Facebook OAuth 对用户进行身份验证,那么您实际上并未对用户进行身份验证。您要求用户让您的应用程序访问 Facebook 上的用户个人资料。您正在访问 Facebook 服务来获取用户信息。这意味着,如果您想使用另一个 OAuth 提供程序服务来对用户进行身份验证,则在不编写新的“身份验证”代码的情况下您将永远无法做到这一点(除了新提供商支持与 facebook 相同的 API 的情况)。
They are used for different goals.
OpenID is used to authenticate SomeUser on your site, asking some other site for the proof of the user's identity.
OAuth is used to grant SomeOtherParty (e.g. other site or application) a permission to do something on behalf of SomeUser on your site (this implies that SomeUser is already somehow authenticated on your site).
Some more comments, for the author's request:
You cannot choose "OAuth to authenticate users", since OAuth is not a user authentication protocol (despite the 'auth' in its name).
With OpenID you can authenticate a user with virtually any OpenID provider without any modifications to your code.
If you choose to authenticate users using Facebook OAuth, you are not actually authenticating users. You are asking users to get your application some access to user's profile on the facebook. You are accessing Facebook services to fetch user information. This means, that if you want to use another OAuth provider service to authenticate users, you will never be able to do it without writing new "authentication" code (except for the case when the new providers supports APIs identical to facebook).