Проверка токена OpenID Access в переполнении стека

Я пытаюсь сделать SSO проверки на ThinkTect OpenId подключиться в PHP
Я написал клиент и получил токен доступа. НО я не могу узнать, как это подтвердить.

В документации сказано:
3.2.2.9. Проверка токена доступа

Чтобы проверить токен доступа, выданный из конечной точки авторизации, с помощью токена ID, клиент ДОЛЖЕН сделать следующее:

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

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

  3. Значение at_hash в идентификаторе токена ДОЛЖНО совпадать с полученным значением.
    на предыдущем этапе.

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

2

Решение

Вот это пример в 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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]