【问题标题】:OAuth vs OpenID: confused about when to use one of these and whyOAuth vs OpenID:对何时使用其中一种以及为什么使用感到困惑
【发布时间】:2017-05-09 01:07:01
【问题描述】:

所以这些天我正在阅读有关OpenIDOAuth2 的信息。我已经看到了一些问题(thisthis),但从我所读到的内容中,您可以使用 OAuth 和进行身份验证,而不仅仅是授权。关于第二个问题,我读过这个:

如果您在网站上有一个帐户(带有一些私人资源),您 可以使用用户名/密码对登录。如果应用程序想要 获取一些私人资源,如果你不想给他们你的 用户名/密码,使用 OAuth。

但是如果你想登录多个网站 帐户,使用 OpenID。

这引发了更多的困惑(Dominick Baier 在他的一次演讲中说,如果你这些年没有听说过OAuth2,那么你过去几年一直住在山洞里,所以这似乎是我的情况):如果我有许多 Web 服务(API)并且如果我有一个 STS 服务来请求所有 API 的令牌,那么我使用的是 OpenIDOAuth 是否无法扩展以使用单个 STS 服务将授权扩展到多个站点?

当您尝试向我解释时,请考虑到我之前没有实施过身份验证或授权过程。

【问题讨论】:

    标签: authentication oauth-2.0 authorization openid


    【解决方案1】:

    您是对的:许多基于 OAuth2 的授权服务器提供了一种身份验证方式。但是 OAuth2 并不是为此目的而设计的。 在 OAuth2 上下文中,客户端只有一个访问令牌来检索/管理资源服务器上的资源。它对资源所有者一无所知。

    这就是创建 OpenID Connect 协议的原因。它在 OAuth2 框架协议之上运行,允许客户端获取有关资源所有者的信息。

    我建议您查看this very interesting talk(从 4:44 开始)。这段视频帮助我理解了每个代币的用途。希望对你也有帮助。

    【讨论】:

    • 对于 SPA,看起来它使用 'id_token' 代替了 'access_token'。 'id_token' 在这种特殊情况下接管 SPA 是真的吗?一个原因是,SPA XHR 由于 CORS 策略而无法与 OAuth 令牌端点通信。
    • id_token 提供有关用户的信息(姓名、身份证、地址、电话...)。 access_token 提供对用户拥有并由资源服务器管理的数据的访问权限。 SPA 可以使用两个令牌或只使用一个。如果 SPA 由于 CORS 策略而无法与令牌端点通信,这是因为端点配置有问题。
    • 哦,谢谢!我已经在stackoverflow.com/questions/55827056/… 讨论过
    • 现在了解到,SPA 获取 id_token 进行身份验证,并通过从 iFrame 调用 Az Token Endpoint 获取 access_token 以调用外部 Web API。
    猜你喜欢
    • 1970-01-01
    • 2012-07-22
    • 2014-05-18
    • 2020-07-11
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多