Проблема с прокси-аутентификацией на сервере приложений для oauth2-microsoft - PullRequest
1 голос
/ 04 марта 2020

Код аутентификации отправляется обратно в мое приложение после входа пользователя в систему. Затем я застреваю , когда запрашиваю токен доступа . то есть

$token = $provider->getAccessToken('authorization_code', [ 'code' => $_GET['code'] ]);

Это занимает примерно 30 секунд, а затем возвращает следующее:

Неустранимая ошибка: Uncaught RuntimeException: Ошибка создания ресурса: [message] fopen (https://login.microsoftonline.com/ [application id] /oauth2/v2.0/token): не удалось открыть поток: попытка подключения не удалась, потому что подключенная сторона не ответила должным образом через некоторое время, или не удалось установить соединение, так как подключенный хост имеет не смог ответить. [file] .. \ vendor \ guzzlehttp \ guzzle \ src \ Handler \ StreamHandler. php [строка] 326 в .. \ vendor \ guzzlehttp \ guzzle \ src \ Handler \ StreamHandler. php: 254 Трассировка стека: # 0 .. \ vendor \ guzzlehttp \ guzzle \ src \ Handler \ StreamHandler. php (337): GuzzleHttp \ Handler \ StreamHandler-> createResource (Object (Closure)) # 1 .. \ vendor \ guzzlehttp \ guzzle \ src \ Обработчик \ StreamHandler. php (53): GuzzleHttp \ Handler \ StreamHandler-> createStream (Object (GuzzleHttp \ Psr7 \ Request), Array) # 2 C: \ Apa c в .. \ vendor \ guzzlehttp \ guzzle \ src \ Handler \ StreamHandler. php в строке 67

Я использую следующий код в качестве поставщика:

$provider = new Stevenmaguire\OAuth2\Client\Provider\Microsoft([
'clientId' => 'my clientId',
'clientSecret' => 'my clientSecret',
'redirectUri' => 'my redirectUri',

'urlAuthorize'              => 'https://login.microsoftonline.com/[app id]/oauth2/v2.0/authorize',
'urlAccessToken'            => 'https://login.microsoftonline.com/[app id]/oauth2/v2.0/token',
'urlResourceOwnerDetails'   => 'https://graph.microsoft.com/v1.0/me',

'response_mode' => 'form_post',
'response_type' => 'id_token'
]);

И в Microsoft. php publi c $defaultScopes = ['openid profile'];

Я предположил, что это происходит из-за прокси. Поэтому я добавил приведенный ниже код на той же странице, откуда я запрашиваю токен.

stream_context_set_default(['http'=>['proxy'=>'tcp://IP:port', 'header'=>'Proxy-Authorization: Basic '.base64_encode('Username:Password')]]);

Для проверки соединения inte rnet я попытался использовать этот прокси для удаления исходного кода HTML любых случайных сайтов, и это сработало.

Не могли бы вы помочь мне, как установить прокси для oauth2-microsoft? Или я получаю эту ошибку по каким-либо другим причинам, которые мне не удалось увидеть?

...