安全Oauth 2.0资源所有者密码凭据授予类型

时间:2016-08-24 17:12:57

标签: security oauth-2.0

要在OAuth 2.0的资源所有者密码凭据授予类型中获取访问令牌,您需要发布类似

的内容
https://oauth.example.com/token?grant_type=password&username=USERNAME&password=PASSWORD&client_id=CLIENT_ID

我不喜欢以明文(附加安全层)发布用户名和密码,鉴于我们将使用SSL,建议采用哪种方式处理?

我正在考虑先从服务器获取一个nonce,然后使用它在POST请求中散列用户名和密码。

1 个答案:

答案 0 :(得分:3)

首先要注意的一些事项:

  1. 您描述的授权类型的正式名称是资源所有者密码凭据授予

  2. 您提供的示例将参数显示为查询字符串的一部分,该字符串通常与HTTP GET请求一起使用

  3. 真正的POST会在HTTP正文中显示参数,并且在使用SSL时,参数不能在连接的两端之外访问,因此原则上只对发送者和接收者可见,适用于大多数用例

  4. ROPC授权由OAuth规范定义,并将用户凭据作为明文传递。你的建议是一个(可以说是相对较小的)安全改进,因为它不会逐字传递任何秘密,而只会提供拥有的证据和#34;那个秘密。

    然而,对现有流程的任何修改都依赖于客户端和授权服务器端的非标准协议功能的支持,这超出了规范,因此只有在您控制这两者时才能使用侧上。