2015-06-06 100 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和經過驗證的替代。 –