对于一个REST,客户端将根据该API编写非浏览器的、非交互式的应用程序,如果OAuth2是要遵循的身份验证机制,那么我们将使用客户端凭据授予类型进行身份验证。这是否是正确的选择,如果是的话,它如何比其他一些认证机制,如Http basic/摘要,或基于认证的相互认证更好呢?
发布于 2014-01-29 19:45:44
OAuth是一种授权协议,而不是身份验证协议。它的作用不是告诉你谁在电线的另一端,而是告诉你那个人能做什么。碰巧,OAuth可以被滥用到身份验证系统中:这称为OpenID连接。其思想是,为了向您提供授权信息(客户机是否允许进行此或那样的操作?),OAuth服务器必须首先确保客户端的身份(我们正在讨论的是谁?);OpenID连接是关于重用该内部身份验证协议的(“如果OAuth服务器允许访问,那么特别是OAuth服务器对客户端进行身份验证,我们对OAuth服务器使用的协议有信心,不管它是什么”)。
如果您不相信OAuth服务器对客户端进行身份验证,那么可以使用其他身份验证方法,例如密码或客户端证书。在这种情况下,您的服务器进行身份验证,然后与OAuth服务器对话:“我有Bob,他允许做什么?”
问题归结为: OAuth服务器中的身份验证层是否适合您的情况?这得由你来决定。如果您决定自己进行身份验证,那么有几种方法具有不同的特性。哪一个是最好的取决于上下文;只有几个评论可以通用的方式:
https://security.stackexchange.com/questions/49520
复制相似问题