2013-10-24 74 views
4

4.3.2 of RFC 6749(描述了“资源所有者密码凭据授予流动的”的oauth2授权框架)指出:客户端凭证在oAuth2资源所有者密码凭证授权流程中是否可选?

如果客户类型是机密或客户端发出的客户
凭证(或交办的其他认证要求),则客户端必须按照第3.2.1节中描述的
对授权服务器进行认证。

似乎无法找到关于“机密客户端”是什么的参考。由此看来,允许非机密客户参与“资源所有者密码凭证授予流程”(4.3)。即客户端不会(也不能)使用授权服务器进行身份验证。

这是正确的吗?

回答

3

退房的client types部分,在这里被赋予“机密客户”的定义为:能够维持他们的 证书(保密的

客户例如,用 一个安全的服务器上实现客户端的限制访问客户端凭证),或能够使用其他方式安全地进行客户端认证。

Cloudfoundry的命令行cf application是使用密码授权的“公共”(即非机密)客户端的示例。

+0

这绝对是规范说的,但它有点弱。基本上:如果你的客户可以保密,你必须使用一个秘密,但如果它可以,那么它不必。随着越来越少的网络应用程序“机密”(因为它们是'基于用户代理'的Javascript - 例如AngularJS,Knockout等),客户端认证似乎只是落后而已。这很重要吗? – Rhubarb

1

中的oauth2规范Section 2.3有以下段落:

授权服务器可以建立客户身份验证方法与公共机构提供服务。但是,授权服务器不得依赖公共客户端身份验证来识别客户端。

如果公共客户端在section 2.1定义为:

客户端无法保持其凭据(例如,通过资源所有者,所用的设备上执行的客户,如安装的本机的保密性应用程序或基于Web浏览器的应用程序),并且无法通过任何其他方式进行安全的客户端身份验证。

因此,您可以(可选)对客户端进行身份验证,但不要认为客户端的含义就是它说的那样。

相关问题