anon

RGW S3 Authorize解析

时光怂恿深爱的人放手 提交于 2019-12-03 22:20:53
截止到目前为止,RGW S3的认证部分支持AWS v4认证、AWS v2认证以及匿名用户认证。这三种认证的总入口位于rgw_process.cc::process_request()函数,该函数中处理认证部分的代码如下: rgw_process.cc::process_request() |__RGW_Auth_S3::authorize() |__根据HTTP请求参数决定认证方式(AWS v4/AWS v2/匿名认证) 下面分别描述这三种认证方式: 1、AWS v2认证方式。 AWS v2认证由RGW_Auth_S3::authorize_v2()函数处理。使用AWS v2方式认证,用户首现根据用户的secret key对认证头部数据进行签名操作,与此同时将认证头部数据、签名数据、用户的access key信息加入到HTTP请求数据流中。RGW收到HTTP请求数据流后提取出上述信息,之后通过用户的access key获取到用户信息(user info)。之后使用用户信息中的secret key对HTTP请求数据流中的认证头部数据进行签名操作,最后判断由RGW计算出来的签名值是否与HTTP请求数据流中的签名值一致来实现用户的认证。 AWS v2函数处理流程如下: RGW_Auth_S3::authorize() |__通过HTTP请求数据流得到用户的access key