Неявное предоставление Laravel 5.4 паспорта ошибка unsupported_grant_type

Я успешно реализовал предоставление кода авторизации и предоставление пароля с паспортом 2.0 и laravel 5.4. После добавления Passport :: enableImplicitGrant (); в AuthServiceProvider.php я попытался реализовать неявное предоставление с помощью приложения angular2.

  getImplicitAccessToken() {
const headers = new Headers({
'Content-Type': 'application/json',
'Accept' : 'application/json'
});
const query = {
'grant_type' : 'token',
'client_id' : Constants.IMPLICIT_TEST_CLIENT_ID,
'redirect_uri' : window.location.origin + '/implicit-code-grant',
'scope': ''
};
const params = this.getParamsFromJson(query);
window.location.href = Constants.OAUTH_AUTHORIZATION_URL + '?' + params.toString();
}
private getParamsFromJson(query: any) {
const params = new URLSearchParams();
for (const key in query) {
params.set(key, query[key]);
}
return params;
}

Однако я получаю ошибку unsupported_grant_type

2

Решение

При выполнении Implicit Grant Type в документации Laravel 5.4
Ответ:

Почему неявный грант не работает

Следование учебнику приводит к:

// 20170711152854
// http://oauth2server1/oauth/authorize?KEY=14997536295521&client_id=1&redirect_uri=http%3A%2F%2Fauthorizationgrantclient1%2Fcallback&response_type=token&scope=%3FXDEBUG_SESSION_START%3DECLIPSE`enter code here`_DBGP

{
"error": "unsupported_grant_type",
"message": "The authorization grant type is not supported by the authorization server.",
"hint": "Check the `grant_type` parameter"}

============================================================================================

В коде запроса неявного предоставления токена он делает запрос:
Http: // oauth2server1 / OAuth / авторизированным?$ запрос

============================================================================================

Обработчик GET-запроса oauth / authorize:
Laravel \ Паспортные \ Http \ Контроллеры \ AuthorizationController @ санкционировать
по маршруту ремесленника php: список

============================================================================================

… Где-то вниз по линии

============================================================================================

In vendor\league\oauth2-server\src\AuthorizationServer.php -> function validateAuthorizationRequest()

/**
* Validate an authorization request
*
* @param ServerRequestInterface $request
*
* @throws OAuthServerException
*
* @return AuthorizationRequest
*/
public function validateAuthorizationRequest(ServerRequestInterface $request)
{
foreach ($this->enabledGrantTypes as $grantType)
{
if($grantType->canRespondToAuthorizationRequest($request)) // <— ValidationStartsHere
{
return $grantType->validateAuthorizationRequest($request);
}
}

throw OAuthServerException::unsupportedGrantType();
}

============================================================================================

… Где-то вниз по линии

============================================================================================

In vendor/league/oauth2-server/src/Grant/AuthCodeGrant.php -> function canRespondToAuthorizationRequest()

/**
* {@inheritdoc}
*/
public function canRespondToAuthorizationRequest(ServerRequestInterface $request)
{
return (array_key_exists('response_type', $request->getQueryParams())  // TRUE
&& $request->getQueryParams()['response_type'] === 'code'      // FALSE
&& isset($request->getQueryParams()['client_id'])              // TRUE
);
}

the values of the following variables are as follows:
$request->getQueryParams():
“KEY”           => “14997536295521”,
“client_id”     => “1”,
“redirect_uri”  => “http://authorizationgrantclient1/callback”, // refer this value back to how to make an        implicit grant token request
“response_type” => “token”,
“scope”         => “”

как результат… этот код всегда возвращает false, и выполнение кода возвращается к вызывающей функции

============================================================================================

going back to vendor\league\oauth2-server\src\AuthorizationServer.php->validateAuthorizationRequest()

/**
* Validate an authorization request
*
* @param ServerRequestInterface $request
*
* @throws OAuthServerException
*
* @return AuthorizationRequest
*/
public function validateAuthorizationRequest(ServerRequestInterface $request)
{
foreach ($this->enabledGrantTypes as $grantType) {
if ($grantType->canRespondToAuthorizationRequest($request)) {
return $grantType->validateAuthorizationRequest($request);
}
}

throw OAuthServerException::unsupportedGrantType(); // <—looks familiar?
}

============================================================================================

… где-то вниз по линии

============================================================================================

In vendor\league\oauth2-server\src\Exception\OAuthServerException.php->function unsupportedGrantType()

/**
* Unsupported grant type error.
*
* @return static
*/
public static function unsupportedGrantType()
{
$errorMessage = 'The authorization grant type is not supported by the authorization server.';
$hint = 'Check the `grant_type` parameter';

return new static($errorMessage, 2, 'unsupported_grant_type', 400, $hint);
}

выглядит довольно знакомо, верно?

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]