中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

RGW S3 Authorize有什么用

發布時間:2021-12-18 16:41:48 來源:億速云 閱讀:103 作者:小新 欄目:云計算

小編給大家分享一下RGW S3 Authorize有什么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

截止到目前為止,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(ASWAccessKeyId)、簽名字符串(Signature)

|__檢查是否是keystone認證,若是則走keystone認證

|__檢查是否是LDAP認證,若是則走LDAP認證

|__通過用戶的access_key獲取到user info信息

|__rgw_create_s3_canonical_header()                    從HTTP請求數據流中獲取認證頭部數據

     認證頭部分包括如下信息:

          req_info.method

          req_info.env[HTTP_CONTENT_MD5]

          req_info.env[CONTENT_TYPE]

          req_info.env[HTTP_DATE]

          req_info.x_meta_map

          req_info.request_uri

          req_info.args.get_sub_resources()

|__rgw_get_s3_header_digest()               

     |__ceph_armor()                    使用user info的secret key對認證頭部分做簽名操作并得到簽名結果

|__比較計算的簽名和傳過來的auth_sign是否一致

2、AWS v4認證方式。

AWS v4認證由RGW_Auth_S3::authorize_v4()函數處理。根據AWS最新的認證規范,AWS v4認證要比AWS v2認證更加全面。

AWS v4認證使用的主要數據結構說明如下:

struct rgw_aws4_auth {

     string date;                                                  "X-Amz-Date"

     string expires;                                             “X-Amz-Expires"

     string credential;                                        "X-Amz-Credential"

     string signedheaders;                                “X-Amz-SignedHeaders"

     string signed_hdrs;

     string access_key_id;

     string credential_scope;

     string canonical_uri;

     string canonical_qs;

     string signature;                                         “X-Amz-Signature"

     string new_signature;

     string payload_hash;

};

AWS v4認證處理流程如下:

RGW_Auth_S3::authorize_v4()

|__創建struct rgw_aws4_auth對象

|__根據HTTP請求數據流初始化struct rgw_aws4_auth對象

|__檢查struct rgw_aws4_auth::credential格式是否正確

|__從struct rgw_aws4_auth::credential中獲取access key(從開始到第一個”/"為止)

|__rgw_get_user_info_by_access_key()                              通過access key得到用戶信息user info

|__解析HTTP請求字符串中info.request_params字符串得到canonical_qs_map[key]=value

|__按照格式key=value&key=value將canonical_qs_map中的內容寫入到struct rgw_aws4_auth::cannonical_qs中

|__解析struct rgw_aws4_auth::signedheaders字符串得到canonical_hdrs_map[token]=token_value

|__按照格式token:value\ntoken:value醬canonical_hdrs_map中的內容寫入到struct rgw_aws4_auth::canonical_hdrs中

|__設置struct rgw_aws4_auth::signed_hdrs = struct rgw_aws4_auth::signedheaders

|__authorize_v4_complete()

     |__rgw_create_s3_v4_canonical_request()

          |__rgw_assemble_s3_v4_canonical_request()

          |__rgw_hash_s3_string_sha256()

     |__rgw_create_s3_v4_string_to_sign()

          |__rgw_assemble_s3_v4_string_to_sign()

     |__rgw_calculate_s3_v4_aws_signature()

|__比較struct rgw_aws4_auth::signature與經過計算后的struct rgw_aws4_auth::new_signature是否一致

3、匿名用戶認證方式。

匿名用戶認證方式由rgw_rest_s3.cc::init_anon_user()函數處理。匿名用戶認證處理流程如下:

init_anon_user()

|__rgw_get_anon_user()

     |__設置用戶信息RGWUserInfo.user_id = RGW_USER_ANON_ID

     |__清空用戶信息RGWUserInfo.display_name和access_key

|__設置struct req_state::perm_mask = RGW_PERM_FULL_CONTROL

以上是“RGW S3 Authorize有什么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

rgw
AI

禄劝| 连州市| 铜山县| 桐柏县| 鞍山市| 边坝县| 治多县| 阳信县| 中西区| 巴彦淖尔市| 察雅县| 白河县| 长乐市| 鄱阳县| 泰州市| 忻城县| 荥阳市| 滕州市| 文登市| 新民市| 温宿县| 龙州县| 阿城市| 共和县| 垦利县| 金华市| 黑河市| 岑巩县| 会同县| 额济纳旗| 巫溪县| 紫金县| 房山区| 芒康县| 新津县| 县级市| 临安市| 惠州市| 千阳县| 哈尔滨市| 信宜市|