RGW中的請求的認證過程

2021-07-07 06:42:02 字數 2710 閱讀 5250

使用者s3使用者請求的合法性驗證過程:src/rgw/rgw_rest_s3.cc

rgw的認證方式有兩種乙個是使用keystone認證;乙個是使用rados自帶的認證方式;根據配置判斷是否使用keystone認證;如果配置了keystone方式,則keystone方式;(二選一)

//生成s3token

if (!rgw_create_s3_canonical_header(s->info, &s->header_time, auth_hdr, qsr))

dout(10) <<

"auth_hdr:\n"

<< auth_hdr << dendl;

time_t req_sec = s->header_time.sec();

if ((req_sec < now - rgw_auth_grace_mins *

60||

req_sec > now + rgw_auth_grace_mins *

60) &&

!qsr)

map<

string, rgwaccesskey>

::iterator iter = s->user.access_keys.find(auth_id);

if (iter == s->user.access_keys.end())

rgwaccesskey& k = iter->second;

if (!k.subuser.empty())

rgwsubuser& subuser = uiter->second;

s->perm_mask = subuser.perm_mask;

} else

s->perm_mask = rgw_perm_full_control;

string digest;

//生成s3 token

int ret = rgw_get_s3_header_digest(auth_hdr, k.key, digest);

if (ret <

0) dout(15) <<

"calculated digest="

<< digest << dendl;

dout(15) <<

"auth_sign="

<< auth_sign << dendl;

dout(15) <<

"compare="

<< auth_sign.compare(digest) << dendl;

if (auth_sign != digest)

if (s->user.system)

s->user = effective_user;}}

} /* if keystone_result < 0 */

// populate the owner info

s->owner.set_id(s->user.user_id);

s->owner.set_name(s->user.display_name);

return

0;}

acegi的認證過程

authenticationmanager是認證核心介面,其作用是驗證客戶端輸入端使用者名稱是否正確 這個介面只有乙個方法 code public authentication authenticate authentication authentication throws authenticat...

GitHub的認證過程(二)

採用ssh驗證的方式有乙個缺陷,任何人在儲存有私匙的計算機上都可以對github進行操作,另外私匙也存在被別人盜竊的風險。ssh提供了一種ssh with authentication key的認證方式。該方式對私匙設定了乙個口令,在使用私匙前必須先輸入口令,口令驗證通過後才能使用私匙進行下一步操作...

Python的Request請求跳過認證及禁用警告

1.跳過認證 在使用python做測試測試的時候,因為認證報錯,可以新增 verify false跳過認證,如下 2.禁用警告 此時,執行不受影響,請求會成功,但結果會報錯 不影響執行,但感覺不舒服,此時在頂部匯入 from requests.packages.urllib3.exceptions ...