我怎样才能从我的php应用程序中使用identityserver4

时间:2017-11-14 22:44:36

标签: php swagger identityserver4

我需要使用来自fiba网站的最新消息,他们提供swagger API使用identityserver4进行授权系统

我们的应用程序是PHP,我试图找到与php和identityserver相关的东西,但我不能。

我想从php向身份服务器发送请求并从中获取访问令牌。我怎么能这样做?

1 个答案:

答案 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 extensionGuzzle之类的一些知名客户端。