据我了解,如果您希望自己的应用通过 OAuth 登录,则必须为每个提供商(Google,Twitter等)编写单独的代码。
使用 OpenID ,您不会 - 它为您处理提供商,您只需处理 OpenID 的连接。
现在 OpenID 已成为 OpenID Connect (这是一个在 OAuth 2.0 之上运行的层),如果我使用它,我仍然会需要编写单独的代码(因为它依赖于 OAuth ),或者我只需要为 OpenID 部分编写一些代码,它将处理所有底层代码 OAuth 提供商?
答案 0 :(得分:2)
从概念上讲,OpenID是SSO(身份验证)协议,而OAuth是授权(代表用户访问资源)协议。实际上,当用户需要登录时,两者似乎都很接近。 OAuth支持多种不同的流,OpenID建立在自动发现之上(用户标识符引用身份提供者)。 OpenID Connect构建于OAuth之上,具有OpenID(特定网址)的自动发现理念。
对于这三个协议,您实际上不需要为每个提供程序编写单独的不同代码,由于不同的配置(服务器URL)或属性检索配置,您可以使用一些具有自定义的公共组件。对于事情有点模糊的OAuth,实现可能会有更多的实质性差异。
取自我对pac4j安全库的经验:https://github.com/pac4j/pac4j