我需要使用来自fiba网站的最新消息,他们提供swagger API使用identityserver4进行授权系统
我们的应用程序是PHP,我试图找到与php和identityserver相关的东西,但我不能。
我想从php向身份服务器发送请求并从中获取访问令牌。我怎么能这样做?
答案 0 :(得分:0)
要获得令牌,您可以使用(它在我的安装中有效):
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后面配置的用户数据库。
sub =“主题”的缩写=>用户的唯一标识符
对/ token请求使用与以后要在/ userinfo使用的作用域相同的作用域。 否则,您将收到错误“ insufficient_scope”:
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中实现所有这些功能,请直接使用curl extension或Guzzle之类的一些知名客户端。