网站渗透测试中溯源技术与授权机制( 三 )


其步骤为:

  • 客户端将用户导向认证服务器
  • 用户决定是否给于客户端授权
  • 假设用户给予授权,认证服务器将用户导向客户端指定的重定向URI,并在URI的Hash部分包含了访问令牌
  • 浏览器向资源服务器发出请求,其中不包括上一步收到的Hash值
  • 资源服务器返回一个网页,其中包含的代码可以获取Hash值中的令牌
  • 浏览器执行上一步获得的脚本,提取出令牌
  • 浏览器将令牌发给客户端
A步骤中,客户端发出的HTTP请求,包含以下参数:
  • response_type:表示授权类型,此处的值固定为 token,必选项
  • client_id:表示客户端的ID,必选项
  • redirect_uri:表示重定向的URI,可选项
  • scope:表示权限范围,可选项
  • state:表示客户端的当前状态,需动态指定,防止CSRF
C步骤中,认证服务器回应客户端的URI,包含以下参数:
  • access_token:表示访问令牌,必选项
  • token_type:表示令牌类型,该值大小写不敏感,必选项
  • expires_in:表示过期时间,单位为秒 。如果省略该参数,必须其他方式设置过期时间
  • scope:表示权限范围,如果与客户端申请的范围一致,此项可省略
  • state:如果客户端的请求中包含这个参数,认证服务器回应与请求时相同的参数
在上面的例子中,认证服务器用HTTP头信息的Location栏,指定浏览器重定向的网址 。注意,在这个网址的Hash部分包含了令牌 。
根据上面的D步骤,下一步浏览器会访问Location指定的网址,但是Hash部分不会发送 。接下来的E步骤,服务提供商的资源服务器发送过来的代码,会提取出Hash中的令牌 。
7.1.5. 密码模式
密码模式(Resource Owner Password Credentials Grant)中,用户向客户端提供自己的用户名和密码 。客户端使用这些信息,向"服务商提供商"索要授权 。
在这种模式中,用户必须把自己的密码给客户端,但是客户端不得储存密码 。
其步骤如下:
  • 用户向客户端提供用户名和密码
  • 客户端将用户名和密码发给认证服务器,向后者请求令牌
  • 认证服务器确认无误后,向客户端提供访问令牌
B步骤中,客户端发出的HTTP请求,包含以下参数:
  • grant_type:表示授权类型,此处的值固定为 password,必选项
  • username:表示用户名,必选项
  • password:表示用户的密码,必选项
  • scope:表示权限范围
7.1.6. 客户端模式
客户端模式(Client Credentials Grant)指客户端以自己的名义,而不是以用户的名义,向服务端进行认证 。
其步骤如下:
  • 客户端向认证服务器进行身份认证,并要求一个访问令牌
  • 认证服务器确认无误后,向客户端提供访问令牌
A步骤中,客户端发出的HTTP请求,包含以下参数:
  • granttype:表示授权类型,此处的值固定为 clientcredentials,必选项
  • scope:表示权限范围,可选项
B步骤中,认证服务器向客户端发送访问令牌,渗透测试中包含的授权模式都要详细的审计和检测,如果对此有更多的想要了解,可以咨询专业的网站安全公司来处理.




推荐阅读