Сервер openid connect, который у вас есть, генерирует ID-токен, который является JWS.
Эти токены подписаны с использованием закрытого ключа (EC, RSA или OKP).
Хорошо известная конфигурация openid должна содержать объект JSON, который указывает, какие алгоритмы используются для подписи токенов, и URL-адрес для получения открытых ключей, связанных с секретными ключами, используемыми для подписи токена.
Например, Конфигурация сервера учетной записи Google указывает, что открытые ключи можно найти в https://www.googleapis.com/oauth2/v3/certs (jwks_uri
параметр).
По этому адресу вы найдете список ключей (JWKSet), отформатированных в JWK (JSON Web Keys). Эти форматы (JWK и JWKSet) являются стандартными представлениями ключей и наборов ключей, используемых в контексте JWT (см. RFC7517 ).
- Как их генерировать
Обычно у вас уже есть хотя бы один закрытый ключ для подписи ваших токенов, поэтому вам не нужно создавать новый.
- После того, как сгенерировано, что с ними делать?
Закрытый ключ, который у вас есть, должен быть PEM (начиная с ------ PRIVATE RSA KEY -----
или аналогичный) или ключ DER.
Вам просто нужно конвертировать этот ключ в JWK.
Я создал небольшое приложение PHAR (PHP) , которое поможет конвертировать ваши ключи. Это приложение является частью Web Token Framework , но может быть установлено как отдельное приложение. Убедитесь, что у вас установлены расширения PHP 7.1, OpenSSL и JSON.
Когда приложение установлено, вы можете выполнить следующую команду:
jose key:convert:public $(jose key:load:key PATH_TO_YOUR_KEY)
Эта команда преобразует закрытый ключ в JWK, а затем преобразует его из частного в открытый.
Результатом можно поделиться через конечную точку jwks_uri.
- Нужно ли изменять существующий код, который мы имеем для openid-connect, и использовать ключи JWK?
Нет. То, как вы строите свои токены, не означает, что вы должны что-то менять.
- Есть ли способ проверки конфигурации openid-connect?
Насколько я знаю, нет инструментов для проверки объекта конфигурации. Вы должны обратиться к спецификации OpenID Connect.