Пароль типа предоставления Symfony2 FOSOAuthServerBundle требует секрет клиента

Я интегрирую FOSOAuthServerBundle для обработки входа из мобильного приложения в бэк-офис Symfony2. Я следовал инструкциям этот ответ, но, как я никогда не использовал OAuth2 прежде чем я немного теряюсь иногда.

Я попытался войти, используя пароль grant_type но по какой-то причине это не сработает, если я не укажу client_secret как GET параметр. Я действительно должен?

Вот как выглядит мой запрос:

http://myserv.local/app_dev.php/oauth/v2/token
?client_id=1_4up4x3hpaask4g0sok0so8sg00gk48c44cc0wkwwsg8048wcog
&grant_type=password
&[email protected]
&password=somepassword

Он возвращает этот ответ, если только client_secret Параметр добавлен:

{"error":"invalid_client","error_description":"The client credentials are invalid"}

0

Решение

Да, вы должны включить секрет клиента. Как только вы сделаете этот запрос, вы получите access_token, который можно использовать с каждым последующим запросом, так что вам не нужно будет снова использовать учетные данные или информацию клиента, пока не истечет access_token. И когда срок действия токена истекает, даже тогда вам не нужно будет снова использовать учетные данные пользователя, вы можете использовать refresh_token вместе с идентификатором клиента и секретом, чтобы получить новый access_token. Итак, ваш первоначальный запрос должен выглядеть так:

http://localhost/oauth/v2/token?client_id=[CLIENT_ID]&client_secret=[SECRET]&grant_type=password&username=[USERNAME]&password=[PASSWORD]

и в ответе вы получите access_token, который можно использовать так:

http://localhost/api/users?access_token=[ACCESS_TOKEN]

надеюсь, это прояснит немного больше для вас.

2

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

Когда вы создаете нового клиента с единственным разрешенным типом гранта «пароль», это не должно быть проблемой безопасности, поскольку секретный ключ клиента является открытым, и никто не сможет использовать его с грантом client_credential.

2

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