2015-06-06 2 views
2

Я пытаюсь сделать проверку SSO на thinktecture OpenId connect в PHP Я написал клиент и получаю токен доступа. НО я не могу узнать, как его проверить.OpenID Access token validation в PHP

В документации указано: 3.2.2.9. Токен доступ Validation

Для проверки маркеров доступа выданных от авторизации Endpoint с ID Токеном, клиент должен сделать следующее:

  1. хэша октетов ASCII представления access_token с хэшем алгоритм, указанный в JWA [JWA] для заголовка alg Параметр заголовка JOSE идентификатора идентификатора. Например, если alg равен RS256, используемым алгоритмом хэширования является SHA-256.

  2. Возьмите самую левую половину хэша и base64url, чтобы закодировать его.

  3. Значение at_hash в ID Token ДОЛЖНО соответствовать полученному значению на предыдущем шаге.

Я понятия не имею, как сделать шаг 1. я получил ALG как RS256 и я имею at_hash от Id маркера, я просто не могу найти Примеру в PHP, как сделать проверку.

ответ

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 и подтверждено, что вместо этого. –