67 $arBucket[
'SETTINGS'][
'ACCESS_KEY'],
68 $arBucket[
'SETTINGS'][
'SECRET_KEY'],
73 'Action' =>
'GetFederationToken',
74 'DurationSeconds' => intval($DurationSeconds),
82 && isset(
$response[
'GetFederationTokenResponse'])
83 && is_array(
$response[
'GetFederationTokenResponse'])
84 && isset(
$response[
'GetFederationTokenResponse'][
'#'])
85 && is_array(
$response[
'GetFederationTokenResponse'][
'#'])
86 && isset(
$response[
'GetFederationTokenResponse'][
'#'][
'GetFederationTokenResult'])
87 && is_array(
$response[
'GetFederationTokenResponse'][
'#'][
'GetFederationTokenResult'])
88 && isset(
$response[
'GetFederationTokenResponse'][
'#'][
'GetFederationTokenResult'][0])
89 && is_array(
$response[
'GetFederationTokenResponse'][
'#'][
'GetFederationTokenResult'][0])
90 && isset(
$response[
'GetFederationTokenResponse'][
'#'][
'GetFederationTokenResult'][0][
'#'])
91 && is_array(
$response[
'GetFederationTokenResponse'][
'#'][
'GetFederationTokenResult'][0][
'#'])
92 && isset(
$response[
'GetFederationTokenResponse'][
'#'][
'GetFederationTokenResult'][0][
'#'][
'Credentials'])
93 && is_array(
$response[
'GetFederationTokenResponse'][
'#'][
'GetFederationTokenResult'][0][
'#'][
'Credentials'])
96 $Credentials =
$response[
'GetFederationTokenResponse'][
'#'][
'GetFederationTokenResult'][0][
'#'][
'Credentials'];
99 isset($Credentials[0])
100 && is_array($Credentials[0])
101 && isset($Credentials[0][
'#'])
102 && is_array($Credentials[0][
'#'])
103 && isset($Credentials[0][
'#'][
'SessionToken'])
104 && is_array($Credentials[0][
'#'][
'SessionToken'])
105 && isset($Credentials[0][
'#'][
'SessionToken'][0])
106 && is_array($Credentials[0][
'#'][
'SessionToken'][0])
107 && isset($Credentials[0][
'#'][
'SessionToken'][0][
'#'])
110 $SessionToken = $Credentials[0][
'#'][
'SessionToken'][0][
'#'];
118 isset($Credentials[0])
119 && is_array($Credentials[0])
120 && isset($Credentials[0][
'#'])
121 && is_array($Credentials[0][
'#'])
122 && isset($Credentials[0][
'#'][
'SecretAccessKey'])
123 && is_array($Credentials[0][
'#'][
'SecretAccessKey'])
124 && isset($Credentials[0][
'#'][
'SecretAccessKey'][0])
125 && is_array($Credentials[0][
'#'][
'SecretAccessKey'][0])
126 && isset($Credentials[0][
'#'][
'SecretAccessKey'][0][
'#'])
129 $SecretAccessKey = $Credentials[0][
'#'][
'SecretAccessKey'][0][
'#'];
137 isset($Credentials[0])
138 && is_array($Credentials[0])
139 && isset($Credentials[0][
'#'])
140 && is_array($Credentials[0][
'#'])
141 && isset($Credentials[0][
'#'][
'AccessKeyId'])
142 && is_array($Credentials[0][
'#'][
'AccessKeyId'])
143 && isset($Credentials[0][
'#'][
'AccessKeyId'][0])
144 && is_array($Credentials[0][
'#'][
'AccessKeyId'][0])
145 && isset($Credentials[0][
'#'][
'AccessKeyId'][0][
'#'])
148 $AccessKeyId = $Credentials[0][
'#'][
'AccessKeyId'][0][
'#'];
156 'ACCESS_KEY' => $AccessKeyId,
157 'SECRET_KEY' => $SecretAccessKey,
158 'SESSION_TOKEN' => $SessionToken,
172 $params[
'SignatureVersion'] = 2;
173 $params[
'SignatureMethod'] =
'HmacSHA1';
175 $params[
'Version'] =
'2011-06-15';
177 $retry_count = COption::GetOptionInt(
'clouds',
'aws_security_service_retry_count');
178 $retry_timeout = COption::GetOptionInt(
'clouds',
'aws_security_service_retry_timeout');
184 $RequestMethod = $verb;
185 $RequestHost =
'sts.amazonaws.com';
192 if ($RequestParams !==
'')
194 $RequestParams .=
'&';
196 $RequestParams .= urlencode(
$name) .
'=' . urlencode($value);
199 $StringToSign = $RequestMethod .
"\n"
200 . $RequestHost .
"\n"
204 $Signature = urlencode(base64_encode($this->
hmacsha1($StringToSign, $secret_key)));
207 $is_ok =
$request->query($RequestMethod,
'https://' . $RequestHost . $RequestURI .
'?' . $RequestParams .
'&Signature=' . $Signature);
214 sleep($retry_timeout);
216 while ((!$is_ok) && ($retry_count >= 0));
218 $this->result =
$request->getResult();
219 $this->status =
$request->getStatus();
220 $this->headers =
$request->getHeaders();
221 $this->error =
$request->getError();
223 if ($this->status == 200)
228 $text = preg_replace(
'/<' .
'\\?XML.*?\\?' .
'>/i',
'', $this->result);
229 if ($obXML->LoadString(
$text))
231 $arXML = $obXML->GetArray();
232 if (is_array($arXML))
247 elseif ($this->status > 0)
279 static $aSearch = [
"\r",
"\n"];
280 if (is_array($arData))
282 if ($arData == array_values($arData))
284 foreach ($arData as
$key => $value)
286 if (is_array($value))
294 $arData[
$key] =
'true';
298 $arData[
$key] =
'false';
303 if (preg_match(
"#['\"\\n\\r<\\\\]#", $value))
305 $arData[
$key] =
'"' . CUtil::JSEscape($value) .
'"';
309 $arData[
$key] =
'"' . $value .
'"';
313 return '[' . implode(
',', $arData) .
']';
316 $sWS =
',' . ($bWS ?
"\n" :
'');
317 $res = ($bWS ?
"\n" :
'') .
'{';
319 foreach ($arData as
$key => $value)
321 if ($bSkipTilda && mb_substr(
$key, 0, 1) ===
'~')
335 if (preg_match(
"#['\"\\n\\r<\\\\]#",
$key))
337 $res .=
'"' . str_replace($aSearch,
'', CUtil::JSEscape(
$key)) .
'":';
344 if (is_array($value))
361 if (preg_match(
"#['\"\\n\\r<\\\\]#", $value))
363 $res .=
'"' . CUtil::JSEscape($value) .
'"';
367 $res .=
'"' . $value .
'"';
371 $res .= ($bWS ?
"\n" :
'') .
'}';
377 if ($arData ===
true)
388 if (preg_match(
"#['\"\\n\\r<\\\\]#", $arData))
390 return '"' . CUtil::JSEscape($arData) .
'"';
394 return '"' . $arData .
'"';