Мне нужно использовать последние новости с сайта FIBA, и они предоставили чванливый API который использует identityserver4 для системы авторизации
Наше приложение — PHP, и я попытался найти что-то связанное с php и identityserver, но не смог.
Я хочу отправить запрос на идентификационный сервер с php и получить от него токен доступа. Как я могу это сделать?
Для получения токена вы можете использовать (он работает на моей установке):
curl -d "client_id=<YOURCLIENT>&client_secret=<YOURCLIENTSECRET>&grant_type=password&username=<youruser>&password=<topsecretpassword>&scope=default openid" -X POST http://youtidentityserver4.tld/oauth/connect/token
Тогда вы получите что-то вроде:
{
"access_token": "eyJhbGciOiJSUz....long token",
"expires_in": 3600,
"token_type": "Bearer"}
Далее вы можете использовать следующий запрос для получения информации о пользователе:
curl -i http://youtidentityserver4.tld/oauth/connect/userinfo \
-H "scope: default openid" \
-H "Authorization: Bearer eyJhbGciOiJSUz....long token"
После выполнения этого вы должны получить что-то вроде:
{
"sub": "j2h4kh42k4242jhg4j2hg42k34gb2k"}
зависит от вашей пользовательской базы данных, настроенной за вашим IdentityServer4.
суб = сокращение от «subject» => уникальный идентификатор пользователя
Используйте те же области действия для запроса / токена, которые вы хотите использовать позже в / userinfo.
В противном случае вы получите сообщение об ошибке «достаточный_обзор»:
HTTP/1.1 403 Forbidden
Content-Type: text/plain; charset=UTF-8
Content-Length: 0
Connection: keep-alive
Date: Thu, 20 Sep 2018 15:52:40 GMT
Server: Kestrel
Cache-Control: no-store, no-cache, max-age=0
Pragma: no-cache
WwwAuthentication: Bearer
WwwAuthentication: error="insufficient_scope"
Если вам нужно больше областей, смотрите под Http: //youtidentityserver4.tld/oauth/.well-known/openid-configuration и посмотрите там под «scopes_supported». (замените youtidentityserver4.tld вашим доменом)
Чтобы реализовать все это в PHP, используйте некоторые из известных клиентов, таких как скручиваемость прямо или пропивать.
Других решений пока нет …