不多嗶嗶直接上代碼(有關獲取harbor庫的)
沒有證書,可以使使用-k來代替–cacert ca.crt
curl命令獲取token
curl -iL -X GET -u admin:Har** https://192.0.0.0/service/token?account=admin\&service=harbor-registry\&scope=registry:catalog:* --cacert ca.crt
根據token獲取鏡像庫
// An highlighted block
curl -iL -X GET -H "Content-Type: application/json" -H "Authorization: Bearer LA7yfEdUBYD3bDhLM" http://192.0.0.0/v2/_catalog --cacert ca.crt
下面是php的代碼
定義一個curl function。如果使用框架,可以定義成方法
function httpRequest($sUrl, $aHeader){
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
// curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_URL, $sUrl);
curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeader);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
$sResult = curl_exec($ch);
$sError=curl_error($ch);
if($sError){
die($sError);
}
curl_close($ch);
return $sResult;
}
public function getIma($sUrl, $aHeader)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_URL, $sUrl);
curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeader);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
$sResult = curl_exec($ch);
$sError=curl_error($ch);
if($sError){
die($sError);
}
curl_close($ch);
return $sResult;
}
$sUrl = 'https://116.85.31.12/v2/_catalog';
//header數據
$token = 'eysadasdasdasda(這裏定義獲取的token值)';
$aHeader = array('authorization: bearer '.$token.' ');
$sResult = httpRequest($sUrl, $aHeader);
//顯示返回數據
var_dump($sResult);
exit;
Basic相當於腳本命令中的-u。我的主要問題就卡在了這裏
$token = 'https://192.0.0.0/service/token?account=admin&service=harbor-registry&scope=registry:catalog:*';
$aHeader = $this->getIma($token,array('authorization: Basic '.base64_encode($this->username.':'.$this->password)));
$d = json_decode($aHeader,true);
$tokenNum = array('authorization:bearer '.$d['token']);