首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >具有客户端凭据的OAuth2 v/s其他机制

具有客户端凭据的OAuth2 v/s其他机制
EN

Security用户
提问于 2014-01-29 11:32:09
回答 1查看 10.2K关注 0票数 9

对于一个REST,客户端将根据该API编写非浏览器的、非交互式的应用程序,如果OAuth2是要遵循的身份验证机制,那么我们将使用客户端凭据授予类型进行身份验证。这是否是正确的选择,如果是的话,它如何比其他一些认证机制,如Http basic/摘要,或基于认证的相互认证更好呢?

EN

回答 1

Security用户

回答已采纳

发布于 2014-01-29 19:45:44

OAuth是一种授权协议,而不是身份验证协议。它的作用不是告诉你谁在电线的另一端,而是告诉你那个人能做什么。碰巧,OAuth可以被滥用到身份验证系统中:这称为OpenID连接。其思想是,为了向您提供授权信息(客户机是否允许进行此或那样的操作?),OAuth服务器必须首先确保客户端的身份(我们正在讨论的是谁?);OpenID连接是关于重用该内部身份验证协议的(“如果OAuth服务器允许访问,那么特别是OAuth服务器对客户端进行身份验证,我们对OAuth服务器使用的协议有信心,不管它是什么”)。

如果您不相信OAuth服务器对客户端进行身份验证,那么可以使用其他身份验证方法,例如密码或客户端证书。在这种情况下,您的服务器进行身份验证,然后与OAuth服务器对话:“我有Bob,他允许做什么?”

问题归结为: OAuth服务器中的身份验证层是否适合您的情况?这得由你来决定。如果您决定自己进行身份验证,那么有几种方法具有不同的特性。哪一个是最好的取决于上下文;只有几个评论可以通用的方式:

  • 不管你做什么,都要使用SSL。这对于确保您所执行的身份验证和授权以不可更改的方式应用于客户机随后发送给您的任何请求都是必要的。
  • 由于您使用SSL,所以不要执行HTTP摘要;而是使用HTTP。与HTTP摘要相比,SSL提供了更好的保护(与HTTP相比);HTTP摘要与正确的密码服务器端存储机制(bcrypt.)不兼容。
  • 客户端证书对于用户来说更加复杂,并且主要是当身份验证和身份管理由单独的实体完成时才有意义。如果您只想为您的服务器对用户进行身份验证,那么证书就过分了,可能不是一个好主意。
票数 11
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/49520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档