2015-06-06 24 views
2

我试图在思想上进行SSO验证OpenId在PHP中连接 我写了一个客户端并获取访问令牌。但我无法找到如何验证它。OpenID在PHP中访问令牌验证

该文档说: 3.2.2.9。访问令牌验证

为验证从授权端点发出一个ID令牌访问令牌,客户应做到以下几点:对的access_token的ASCII码表示的

  1. 哈希八位位组与 哈希在JWA [JWA]中为alg标头指定的算法 ID标记的JOSE标头的参数。例如,如果alg是 RS256,则使用的哈希算法是SHA-256。

  2. 把最左边的一半散列和base64url编码它。

  3. ID令牌中at_hash的值必须与上一步中产生的值 匹配。

我不知道如何使步骤1 我得到了ALG为RS256和我有从ID令牌的at_hash,我只是不能找到如何做验证在PHP中exampel。

回答

0

Here是在PHP中的例子来计算at_hash值应该很容易适应环境:

public function setAccessTokenHash($accessTokenString) 
    { 
     // bit : 256/384/512 
     if(isset($this->_header['alg']) && $this->_header['alg'] != 'none'){ 
      $bit = substr($this->_header['alg'], 2, 3); 
     }else{ 
      // TODO: Error case. throw exception??? 
      $bit = '256'; 
     } 
     $len = ((int)$bit)/16; 
     $this->_payload['at_hash'] = Akita_OpenIDConnect_Util_Base64::urlEncode(substr(hash('sha'.$bit, $accessTokenString, true), 0, $len)); 
    } 
+0

我们做了周围的广告作品得到了Idtoken和经过验证的替代。 –