#authentication #ssl #grpc
Вопрос:
Я тестирую приложение grpc клиент/сервер, так как это тест, и клиент, и сервер имеют самозаверяющие сертификаты. Я использовал SslCredentials и SslServerCredentials (на стороне сервера я передаю сертификат и ключ, на стороне клиента я передаю сертификат сервера, сертификат клиента и ключ клиента), и рукопожатие работает нормально. Однако, когда я пытаюсь получить доступ к информации о сертификате клиента со стороны сервера, я обнаружил, что в объекте AuthContext вообще нет соответствующей информации (я распечатал все свойства и не вижу ничего, связанного с сертификатом клиента). Что я здесь упускаю? Спасибо.
Комментарии:
1. Я понял, что не устанавливал правильные параметры аутентификации клиента на стороне сервера, когда это правильно установлено, я вижу соответствующую информацию в объекте AuthContext.
Ответ №1:
Да, AuthContext
работает. Кроме того, вы можете получить программный доступ к информации о учетных данных через библиотеку трассировки каналов gRPC-Channelz.
Вот пример того, как его настроить: https://github.com/grpc/grpc/tree/master/examples/python/debug
Информация, которую вы ищете, находится на уровне сокета: https://github.com/grpc/grpc/blob/master/src/proto/grpc/channelz/channelz.proto#L240
В качестве альтернативы вы можете попробовать использовать инструмент командной строки (https://github.com/grpc-ecosystem/grpcdebug) для визуализации данных трассировки, собранных вами из приложения.