【问题标题】:Which oauth or openid-connect I need to choose in order to build a public sdk?为了构建公共 sdk,我需要选择哪个 oauth 或 openid-connect?
【发布时间】:2018-12-08 12:30:00
【问题描述】:

我将为开发人员构建一个 SDK 以访问我的后端 RESTful 资源。 比如我在下面定义了restful api:

get     GET  /changes/changeId  
list    GET  /changes   
getStartPageToken   GET  /changes/startPageToken

我需要保护我的 api,我遇到了 openid-connect、auth1 和 auth2,但我不确定我需要使用哪一个。据我所知,auth2更习惯于以googlefacebook账号登录等第三方认证。是这样吗?

在其他一些公共 API 设计中,开发者需要注册一个开发者帐户并获取应用密钥和秘密。他们可以使用密钥和秘密来使用他们的 API。这是哪种认证方式?

其中哪一个更适合我的用例?

【问题讨论】:

    标签: authentication oauth oauth-2.0 openid-connect


    【解决方案1】:

    OAuth 1.0 已被OAuth 2.0 淘汰。因此,您可以从库存中移除 OAuth 1.0。

    现在 OAuth 2.0 和 OpenID Connect 之间的区别在于它们的目的。 OAuth 2.0 是为授权而构建的框架。 OpenID Connect 构建在 OAuth 2.0 之上(扩展其功能),并提供授权和身份验证(身份验证基于 id token)。

    现在,这些协议使您能够完成协议流程并从授权服务器(有时称为身份提供者或身份服务器)获取令牌。与您维护每个应用程序的用户不同,用户注册表由授权服务维护,可以在多个应用程序之间共享。此外,授权服务器将发布和维护令牌。它还将提供令牌消费者使用的令牌验证机制(例如:-OAuth 2.0 Token introspection)。

    据我所知,auth2更习惯于第三方认证

    不一定。如上所述,这种方法使您能够集中维护用户帐户。并为内部应用程序提供针对用户获取令牌的方法。允许第三方进行身份验证是一个好处。

    在其他一些公共 API 设计中,开发者需要注册一个开发者帐户并获取应用程序密钥和秘密。他们可以使用密钥和秘密来使用他们的 API。

    OAuth 2.0 (OpenID Connect) 还要求您在授权服务器上注册您的应用程序。但与应用程序密钥、基于秘密的方法(或基于 API 密钥的方法)不同,OAuth 2.0 为您提供的是自动获取令牌和刷新令牌过程的能力。这是通过遵循定义的流程来完成的(例如:-Authorization code flow)。具有较短生命周期和撤销它们的能力的令牌也有利于安全。

    其中哪一个更适合我的用例?

    我更喜欢您使用 OAuth 2.0 或 OpenID Connect。有了它们,您可以使用访问令牌保护您的 API。您的 SDK 的用户应发送Bearer Token Usage中定义的访问令牌

    现在如何在 OAuth 2.0 和 OpenID Connect 之间进行选择?

    这取决于 SDK 需要什么客户端。如果客户端应用程序需要识别最终用户并对其进行身份验证,那么您应该选择 OpenID Connect。但是如果客户端应用程序只需要使用 API,那么您可以使用 OAuth 2.0。无论哪种方式,都必须使用有效的访问令牌调用您的 API。并且您的 API 应该在授予访问权限之前验证访问令牌。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-18
      • 2018-04-18
      • 1970-01-01
      • 2011-05-14
      • 2011-04-05
      • 1970-01-01
      • 2015-03-01
      • 1970-01-01
      相关资源
      最近更新 更多