使用者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 ...