52 'Action' =>
'GetFederationToken',
53 'Version' =>
'2011-06-15',
54 'DurationSeconds' => intval($DurationSeconds),
56 'Policy' => json_encode($Policy),
72 $arBucket[
'SETTINGS'],
81 && isset(
$response[
'GetFederationTokenResponse'])
82 && is_array(
$response[
'GetFederationTokenResponse'])
83 && isset(
$response[
'GetFederationTokenResponse'][
'#'])
84 && is_array(
$response[
'GetFederationTokenResponse'][
'#'])
85 && isset(
$response[
'GetFederationTokenResponse'][
'#'][
'GetFederationTokenResult'])
86 && is_array(
$response[
'GetFederationTokenResponse'][
'#'][
'GetFederationTokenResult'])
87 && isset(
$response[
'GetFederationTokenResponse'][
'#'][
'GetFederationTokenResult'][0])
88 && is_array(
$response[
'GetFederationTokenResponse'][
'#'][
'GetFederationTokenResult'][0])
89 && isset(
$response[
'GetFederationTokenResponse'][
'#'][
'GetFederationTokenResult'][0][
'#'])
90 && is_array(
$response[
'GetFederationTokenResponse'][
'#'][
'GetFederationTokenResult'][0][
'#'])
91 && isset(
$response[
'GetFederationTokenResponse'][
'#'][
'GetFederationTokenResult'][0][
'#'][
'Credentials'])
92 && is_array(
$response[
'GetFederationTokenResponse'][
'#'][
'GetFederationTokenResult'][0][
'#'][
'Credentials'])
95 $Credentials =
$response[
'GetFederationTokenResponse'][
'#'][
'GetFederationTokenResult'][0][
'#'][
'Credentials'];
98 isset($Credentials[0])
99 && is_array($Credentials[0])
100 && isset($Credentials[0][
'#'])
101 && is_array($Credentials[0][
'#'])
102 && isset($Credentials[0][
'#'][
'SessionToken'])
103 && is_array($Credentials[0][
'#'][
'SessionToken'])
104 && isset($Credentials[0][
'#'][
'SessionToken'][0])
105 && is_array($Credentials[0][
'#'][
'SessionToken'][0])
106 && isset($Credentials[0][
'#'][
'SessionToken'][0][
'#'])
109 $SessionToken = $Credentials[0][
'#'][
'SessionToken'][0][
'#'];
117 isset($Credentials[0])
118 && is_array($Credentials[0])
119 && isset($Credentials[0][
'#'])
120 && is_array($Credentials[0][
'#'])
121 && isset($Credentials[0][
'#'][
'SecretAccessKey'])
122 && is_array($Credentials[0][
'#'][
'SecretAccessKey'])
123 && isset($Credentials[0][
'#'][
'SecretAccessKey'][0])
124 && is_array($Credentials[0][
'#'][
'SecretAccessKey'][0])
125 && isset($Credentials[0][
'#'][
'SecretAccessKey'][0][
'#'])
128 $SecretAccessKey = $Credentials[0][
'#'][
'SecretAccessKey'][0][
'#'];
136 isset($Credentials[0])
137 && is_array($Credentials[0])
138 && isset($Credentials[0][
'#'])
139 && is_array($Credentials[0][
'#'])
140 && isset($Credentials[0][
'#'][
'AccessKeyId'])
141 && is_array($Credentials[0][
'#'][
'AccessKeyId'])
142 && isset($Credentials[0][
'#'][
'AccessKeyId'][0])
143 && is_array($Credentials[0][
'#'][
'AccessKeyId'][0])
144 && isset($Credentials[0][
'#'][
'AccessKeyId'][0][
'#'])
147 $AccessKeyId = $Credentials[0][
'#'][
'AccessKeyId'][0][
'#'];
155 'ACCESS_KEY' => $AccessKeyId,
156 'SECRET_KEY' => $SecretAccessKey,
157 'SESSION_TOKEN' => $SessionToken,
158 'EXPIRATION' => $Credentials[0][
'#'][
'Expiration'][0][
'#'] ??
'',
167 public function AssumeRole($arBucket, $Policy, $Name, $DurationSeconds = 43200)
170 'Action' =>
'AssumeRole',
171 'Version' =>
'2011-06-15',
173 'RoleSessionName' =>
'testexample',
174 'Policy' => json_encode($Policy),
175 'DurationSeconds' => intval($DurationSeconds),
191 $arBucket[
'SETTINGS'],
198 'Content-Type' =>
'application/x-www-form-urlencoded; charset=utf-8',
204 && isset(
$response[
'AssumeRoleResponse'])
205 && is_array(
$response[
'AssumeRoleResponse'])
206 && isset(
$response[
'AssumeRoleResponse'][
'#'])
207 && is_array(
$response[
'AssumeRoleResponse'][
'#'])
208 && isset(
$response[
'AssumeRoleResponse'][
'#'][
'AssumeRoleResult'])
209 && is_array(
$response[
'AssumeRoleResponse'][
'#'][
'AssumeRoleResult'])
210 && isset(
$response[
'AssumeRoleResponse'][
'#'][
'AssumeRoleResult'][0])
211 && is_array(
$response[
'AssumeRoleResponse'][
'#'][
'AssumeRoleResult'][0])
212 && isset(
$response[
'AssumeRoleResponse'][
'#'][
'AssumeRoleResult'][0][
'#'])
213 && is_array(
$response[
'AssumeRoleResponse'][
'#'][
'AssumeRoleResult'][0][
'#'])
214 && isset(
$response[
'AssumeRoleResponse'][
'#'][
'AssumeRoleResult'][0][
'#'][
'Credentials'])
215 && is_array(
$response[
'AssumeRoleResponse'][
'#'][
'AssumeRoleResult'][0][
'#'][
'Credentials'])
218 $Credentials =
$response[
'AssumeRoleResponse'][
'#'][
'AssumeRoleResult'][0][
'#'][
'Credentials'];
221 isset($Credentials[0])
222 && is_array($Credentials[0])
223 && isset($Credentials[0][
'#'])
224 && is_array($Credentials[0][
'#'])
225 && isset($Credentials[0][
'#'][
'SessionToken'])
226 && is_array($Credentials[0][
'#'][
'SessionToken'])
227 && isset($Credentials[0][
'#'][
'SessionToken'][0])
228 && is_array($Credentials[0][
'#'][
'SessionToken'][0])
229 && isset($Credentials[0][
'#'][
'SessionToken'][0][
'#'])
232 $SessionToken = $Credentials[0][
'#'][
'SessionToken'][0][
'#'];
240 isset($Credentials[0])
241 && is_array($Credentials[0])
242 && isset($Credentials[0][
'#'])
243 && is_array($Credentials[0][
'#'])
244 && isset($Credentials[0][
'#'][
'SecretAccessKey'])
245 && is_array($Credentials[0][
'#'][
'SecretAccessKey'])
246 && isset($Credentials[0][
'#'][
'SecretAccessKey'][0])
247 && is_array($Credentials[0][
'#'][
'SecretAccessKey'][0])
248 && isset($Credentials[0][
'#'][
'SecretAccessKey'][0][
'#'])
251 $SecretAccessKey = $Credentials[0][
'#'][
'SecretAccessKey'][0][
'#'];
259 isset($Credentials[0])
260 && is_array($Credentials[0])
261 && isset($Credentials[0][
'#'])
262 && is_array($Credentials[0][
'#'])
263 && isset($Credentials[0][
'#'][
'AccessKeyId'])
264 && is_array($Credentials[0][
'#'][
'AccessKeyId'])
265 && isset($Credentials[0][
'#'][
'AccessKeyId'][0])
266 && is_array($Credentials[0][
'#'][
'AccessKeyId'][0])
267 && isset($Credentials[0][
'#'][
'AccessKeyId'][0][
'#'])
270 $AccessKeyId = $Credentials[0][
'#'][
'AccessKeyId'][0][
'#'];
278 'ACCESS_KEY' => $AccessKeyId,
279 'SECRET_KEY' => $SecretAccessKey,
280 'SESSION_TOKEN' => $SessionToken,
281 'EXPIRATION' => $Credentials[0][
'#'][
'Expiration'][0][
'#'] ??
'',
297 'streamTimeout' => $this->streamTimeout,
299 if (isset($additional_headers[
'option-file-result']))
301 $request->setOutputStream($additional_headers[
'option-file-result']);
304 if (isset($additional_headers[
'Content-Type']))
306 $ContentType = $additional_headers[
'Content-Type'];
310 $ContentType =
$content !==
'' ?
'text/plain' :
'';
312 unset($additional_headers[
'Content-Type']);
314 foreach ($this->set_headers as
$key => $value)
316 $additional_headers[
$key] = $value;
319 if (array_key_exists(
'SESSION_TOKEN', $arSettings))
321 $additional_headers[
'x-amz-security-token'] = $arSettings[
'SESSION_TOKEN'];
331 foreach ($additional_headers as
$key => $value)
333 if (!preg_match(
'/^option-/',
$key))
350 if (defined(
'BX_CLOUDS_TRACE') &&
$verb !==
'GET' &&
$verb !==
'HEAD')
352 $stime = microtime(1);
354 'request_id' => md5((
string)mt_rand()),
359 if (function_exists(
'getmypid'))
361 $logRequest[
'pid'] = getmypid();
366 $request->setHeader(
'Content-type', $ContentType);
369 $this->status =
$request->getStatus();
372 $this->headers[
$key] = is_array($value) ? $value[0] : $value;
374 $this->errstr = implode(
"\n",
$request->getError());
375 $this->errno = $this->errstr ? 255 : 0;
376 $this->result =
$request->getResult();
381 $logRequest[
'time'] = round(microtime(
true) - $stime, 6);
386 if ($this->status == 200)
389 isset($additional_headers[
'option-raw-result'])
390 || isset($additional_headers[
'option--result'])
395 elseif ($this->result !==
'')
398 $text = preg_replace(
'/<' .
'\\?XML.*?\\?' .
'>/i',
'', $this->result);
399 if ($obXML->LoadString(
$text))
401 $arXML = $obXML->GetArray();
402 if (is_array($arXML))
408 $e =
new CApplicationException(
GetMessage(
'CLO_SECSERV_STS_XML_PARSE_ERROR', [
'#errno#' =>
'1']));
418 elseif ($this->status > 0)