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 连接获取令牌的主要内容,如果未能解决你的问题,请参考以下文章

是否应该在浏览器中验证 OpenID 连接 ID 令牌?

访问令牌实现的spring security openid连接请求不符合cas api要求

OpenID 连接成功的响应在重定向 uri 和访问令牌之间有 #

expires_in 或 expires_at 用于 OpenId 连接中的访问令牌?

获取 OpenID Connect / OAuth 访问令牌以调用 MS Dynamics

向 ID 令牌 OpenID 添加自定义声明