
* updated dependencies * updated LV version to 5.6 Depends-On: https://review.openstack.org/629495 Depends-On: https://review.openstack.org/629896 Change-Id: Iacf81dd65d71102ad0660c5c2bdd6633bf727ec0
63 lines
2.2 KiB
PHP
63 lines
2.2 KiB
PHP
<?php namespace Services\OAuth2;
|
|
/**
|
|
* Copyright 2016 OpenStack Foundation
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
**/
|
|
use jwk\IJWKSet;
|
|
use jwk\impl\JWKSet;
|
|
use OAuth2\Models\IClient;
|
|
use OAuth2\Services\IClientJWKSetReader;
|
|
use GuzzleHttp\Client as HttpClient;
|
|
use GuzzleHttp\Exception\RequestException as HttpRequestException;
|
|
use Utils\Http\HttpContentType;
|
|
use Illuminate\Support\Facades\Log;
|
|
use Illuminate\Support\Facades\Config;
|
|
/**
|
|
* Class HttpIClientJWKSetReader
|
|
* @package Services\OAuth2
|
|
*/
|
|
final class HttpIClientJWKSetReader implements IClientJWKSetReader
|
|
{
|
|
|
|
/**
|
|
* @param IClient $client
|
|
* @return IJWKSet|null
|
|
* @throws \jwk\exceptions\InvalidJWKAlgorithm
|
|
* @throws \jwk\exceptions\JWKInvalidIdentifierException
|
|
*/
|
|
public function read(IClient $client)
|
|
{
|
|
try {
|
|
$jwk_set_uri = $client->getJWKSUri();
|
|
if (empty($jwk_set_uri)) return null;
|
|
|
|
$client = new HttpClient([
|
|
'defaults' => [
|
|
'timeout' => Config::get('curl.timeout', 60),
|
|
'allow_redirects' => Config::get('curl.allow_redirects', false),
|
|
'verify' => Config::get('curl.verify_ssl_cert', true)
|
|
]
|
|
]);
|
|
|
|
$response = $client->get($jwk_set_uri);
|
|
if ($response->getStatusCode() !== 200) return null;
|
|
$content_type = $response->getHeader('content-type');
|
|
if (is_null($content_type)) return null;
|
|
if (!$content_type->hasValue(HttpContentType::Json)) return null;
|
|
return JWKSet::fromJson($response->getBody());
|
|
}
|
|
catch (HttpRequestException $ex)
|
|
{
|
|
Log::warning($ex->getMessage());
|
|
return null;
|
|
}
|
|
}
|
|
} |