Authentication 为了构建公共sdk,我需要选择哪个oauth或openid连接?

Authentication 为了构建公共sdk,我需要选择哪个oauth或openid连接?,authentication,oauth,oauth-2.0,openid-connect,Authentication,Oauth,Oauth 2.0,Openid Connect,我将构建一个SDK,供开发人员访问我的后端restful资源。 例如,我在下面定义了restful API: get GET /changes/changeId list GET /changes getStartPageToken GET /changes/startPageToken 我需要保护我的API,我遇到了openid connect、auth1和auth2,但我不确定我需要使用哪一个。据我所知,auth2更习惯于第三方身份验证,如登录google

我将构建一个SDK,供开发人员访问我的后端restful资源。 例如,我在下面定义了restful API:

get     GET  /changes/changeId  
list    GET  /changes   
getStartPageToken   GET  /changes/startPageToken
我需要保护我的API,我遇到了openid connect、auth1和auth2,但我不确定我需要使用哪一个。据我所知,auth2更习惯于第三方身份验证,如登录
google
facebook
帐户等。对吗

在其他一些公共API设计中,开发人员需要注册开发人员帐户并获得应用程序密钥和密码。他们可以使用密钥和密码来使用API。这是哪种类型的身份验证

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

已经过时了。因此,您可以从库存中删除OAuth 1.0

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

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

据我所知,auth2更习惯于第三方身份验证

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

在其他一些公共API设计中,开发人员需要注册开发人员帐户并获得应用程序密钥和密码。他们可以使用密钥和密码来使用API。

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

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

我希望您使用OAuth 2.0或OpenID Connect。使用它们,您可以使用访问令牌保护API。SDK的用户应发送中定义的访问令牌

现在在OAuth 2.0和OpenID Connect之间选择什么

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