Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?php declare(strict_types=1); namespace AsyncAws\Core\Credentials; use AsyncAws\Core\C..
Decoded Output download
<?php
declare(strict_types=1);
namespace AsyncAws\Core\Credentials;
use AsyncAws\Core\Configuration;
use AsyncAws\Core\Exception\RuntimeException;
use AsyncAws\Core\Sts\StsClient;
use Psr\Log\LoggerInterface;
use Psr\Log\NullLogger;
use Symfony\Contracts\HttpClient\HttpClientInterface;
/**
* Provides Credentials from Configuration data.
*
* @author Jrmy Deruss <[email protected]>
*/
final class ConfigurationProvider implements CredentialProvider
{
use DateFromResult;
/**
* @var LoggerInterface
*/
private $logger;
/**
* @var HttpClientInterface|null
*/
private $httpClient;
public function __construct(?HttpClientInterface $httpClient = null, ?LoggerInterface $logger = null)
{
$this->logger = $logger ?? new NullLogger();
$this->httpClient = $httpClient;
}
public function getCredentials(Configuration $configuration): ?Credentials
{
$accessKeyId = $configuration->get(Configuration::OPTION_ACCESS_KEY_ID);
$secretAccessKeyId = $configuration->get(Configuration::OPTION_SECRET_ACCESS_KEY);
if (null === $accessKeyId || null === $secretAccessKeyId) {
return null;
}
$credentials = new Credentials(
$accessKeyId,
$secretAccessKeyId,
$configuration->get(Configuration::OPTION_SESSION_TOKEN)
);
$roleArn = $configuration->get(Configuration::OPTION_ROLE_ARN);
if (null !== $roleArn) {
$region = $configuration->get(Configuration::OPTION_REGION);
$roleSessionName = $configuration->get(Configuration::OPTION_ROLE_SESSION_NAME);
return $this->getCredentialsFromRole($credentials, $region, $roleArn, $roleSessionName);
}
/** @psalm-suppress PossiblyNullArgument */
return $credentials;
}
private function getCredentialsFromRole(Credentials $credentials, string $region, string $roleArn, ?string $roleSessionName = null): ?Credentials
{
$roleSessionName = $roleSessionName ?? uniqid('async-aws-', true);
$stsClient = new StsClient(['region' => $region], $credentials, $this->httpClient);
$result = $stsClient->assumeRole([
'RoleArn' => $roleArn,
'RoleSessionName' => $roleSessionName,
]);
try {
if (null === $credentials = $result->getCredentials()) {
throw new RuntimeException('The AsumeRole response does not contains credentials');
}
} catch (\Exception $e) {
$this->logger->warning('Failed to get credentials from assumed role: {exception}".', ['exception' => $e]);
return null;
}
return new Credentials(
$credentials->getAccessKeyId(),
$credentials->getSecretAccessKey(),
$credentials->getSessionToken(),
Credentials::adjustExpireDate($credentials->getExpiration(), $this->getDateFromResult($result))
);
}
}
?>
Did this file decode correctly?
Original Code
<?php
declare(strict_types=1);
namespace AsyncAws\Core\Credentials;
use AsyncAws\Core\Configuration;
use AsyncAws\Core\Exception\RuntimeException;
use AsyncAws\Core\Sts\StsClient;
use Psr\Log\LoggerInterface;
use Psr\Log\NullLogger;
use Symfony\Contracts\HttpClient\HttpClientInterface;
/**
* Provides Credentials from Configuration data.
*
* @author Jrmy Deruss <[email protected]>
*/
final class ConfigurationProvider implements CredentialProvider
{
use DateFromResult;
/**
* @var LoggerInterface
*/
private $logger;
/**
* @var HttpClientInterface|null
*/
private $httpClient;
public function __construct(?HttpClientInterface $httpClient = null, ?LoggerInterface $logger = null)
{
$this->logger = $logger ?? new NullLogger();
$this->httpClient = $httpClient;
}
public function getCredentials(Configuration $configuration): ?Credentials
{
$accessKeyId = $configuration->get(Configuration::OPTION_ACCESS_KEY_ID);
$secretAccessKeyId = $configuration->get(Configuration::OPTION_SECRET_ACCESS_KEY);
if (null === $accessKeyId || null === $secretAccessKeyId) {
return null;
}
$credentials = new Credentials(
$accessKeyId,
$secretAccessKeyId,
$configuration->get(Configuration::OPTION_SESSION_TOKEN)
);
$roleArn = $configuration->get(Configuration::OPTION_ROLE_ARN);
if (null !== $roleArn) {
$region = $configuration->get(Configuration::OPTION_REGION);
$roleSessionName = $configuration->get(Configuration::OPTION_ROLE_SESSION_NAME);
return $this->getCredentialsFromRole($credentials, $region, $roleArn, $roleSessionName);
}
/** @psalm-suppress PossiblyNullArgument */
return $credentials;
}
private function getCredentialsFromRole(Credentials $credentials, string $region, string $roleArn, ?string $roleSessionName = null): ?Credentials
{
$roleSessionName = $roleSessionName ?? uniqid('async-aws-', true);
$stsClient = new StsClient(['region' => $region], $credentials, $this->httpClient);
$result = $stsClient->assumeRole([
'RoleArn' => $roleArn,
'RoleSessionName' => $roleSessionName,
]);
try {
if (null === $credentials = $result->getCredentials()) {
throw new RuntimeException('The AsumeRole response does not contains credentials');
}
} catch (\Exception $e) {
$this->logger->warning('Failed to get credentials from assumed role: {exception}".', ['exception' => $e]);
return null;
}
return new Credentials(
$credentials->getAccessKeyId(),
$credentials->getSecretAccessKey(),
$credentials->getSessionToken(),
Credentials::adjustExpireDate($credentials->getExpiration(), $this->getDateFromResult($result))
);
}
}
Function Calls
None |
Stats
MD5 | 9b8fddd6e8ea70aab0ec39626d1721a7 |
Eval Count | 0 |
Decode Time | 120 ms |