我将为开发人员构建一个SDK,以访问我的后端静态资源。 例如,我在下面定义了宁静的api:
get GET /changes/changeId
list GET /changes
getStartPageToken GET /changes/startPageToken
我需要保护我的api,我遇到了openid-connect,auth1和auth2,但是我不确定我需要使用哪一个。据我所知,auth2更常用于第三方身份验证,例如以google
,facebook
帐户登录等。对吗?
在其他一些公共API设计中,开发人员需要注册开发人员帐户并获取应用密钥和机密。他们可以使用密钥和机密来使用其API。这是哪种身份验证?
其中哪一个更适合我的用例?
答案 0 :(得分:0)
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应该在授予访问权限之前验证访问令牌。