php openid 连接获取令牌
Posted
技术标签:
【中文标题】php openid 连接获取令牌【英文标题】:php openid connect get token 【发布时间】:2017-11-19 08:10:13 【问题描述】:我尝试将jumbojett 库用于php 和openid。我建立了连接,但获得了秘密 ID 和客户端,但是当我想获得令牌时,我不知道如何。
在小文档中是下一个示例:
$oidc = new OpenIDConnectClient('https://id.provider.com',
'ClientIDHere',
'ClientSecretHere');
$oidc->providerConfigParam(array('token_endpoint'=>'https://id.provider.com/connect/token'));
$oidc->addScope('my_scope');
// this assumes success (to validate check if the access_token property is there and a valid JWT) :
$clientCredentialsToken = $oidc->requestClientCredentialsToken()->access_token;
但库中不存在函数requestClientCredentialsToken()
。有谁知道如何获取令牌或推荐一些其他 php 库,我可以在其中定义范围、重定向 uri、从开放服务器获取客户端密码和 id 以及获取令牌。
提前致谢
【问题讨论】:
当我使用 $this->oidc->authenticate();我从身份验证服务获取登录页面,当我登录并转到重定向 uri 时,我的重定向太多,我的应用程序死了。有谁知道这个问题的解决方案吗? 您可能应该有两段代码 - 一段创建身份验证 URL 并发送重定向响应,另一段处理来自 OAuth2 服务器的重定向。您不能同步请求令牌。 【参考方案1】:有一个公共函数getAccessToken()
。
您应该像这样修改上面的代码:
$oidc = new OpenIDConnectClient('https://id.provider.com',
'ClientIDHere',
'ClientSecretHere');
$oidc->providerConfigParam(array('token_endpoint'=>'https://id.provider.com/connect/token'));
$oidc->addScope('my_scope');
$oicd->authenticate();
$mytoken=$oidc->getAccessToken();
【讨论】:
以上是关于php openid 连接获取令牌的主要内容,如果未能解决你的问题,请参考以下文章
访问令牌实现的spring security openid连接请求不符合cas api要求
OpenID 连接成功的响应在重定向 uri 和访问令牌之间有 #
expires_in 或 expires_at 用于 OpenId 连接中的访问令牌?