Java Keyfactory не может генерировать ECPublicKey, используя nimbus - PullRequest
0 голосов
/ 27 августа 2018

Я пытаюсь проверить токен JWT алгоритма типа EC, полученный от PingAccess, используя библиотеку nimbusds. Это не работает во всех средах. Но все они имеют одинаковую версию Java. В некоторых средах не удалось сгенерировать объект ECPublickey со спецификациями ключей, поэтому он не может найти соответствующий ключ из удаленного набора ключей. У кого-нибудь есть подобный опыт работы с токеном JWT с алгоритмом EC? Как я могу узнать, существует ли алгоритм ЕС в окружающей среде? Из документа здесь https://docs.oracle.com/javase/8/docs/api/index.html?java/security/KeyFactory.html,

Каждая реализация платформы Java должна поддерживать следующие стандартные алгоритмы KeyFactory:

DiffieHellman DSA RSA

Здесь не упоминаются алгоритмы EC, но они перечислены здесь: https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#KeyFactory

В классе nimbusds ECKey трассировка остановилась на этой строке:

ECPublicKey ecPublicKey = (ECPublicKey)keyFactory.generatePublic(publicKeySpec);

Ключ фабрики:

 keyFactory = KeyFactory.getInstance("EC");

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

На самом деле проблема в списке провайдеров в java.security file. Без указания конкретного поставщика для алгоритма он будет использовать поставщика по умолчанию в списке, представленном в java.security. В производственной среде этот файл отсутствует. Трудно понять это, потому что нет исключений или ошибок. Короче говоря, файл java.security отсутствует, и он не может найти поставщика алгоритма.

0 голосов
/ 13 октября 2018

Мне не дают стековую трассировку, это немного угадайка с моей стороны. Тем не менее, учитывая, что он работает в некоторых средах, мне кажется, что в некоторых средах (тех, которые работают) включены файлы политики силы неограниченного ключа, а в других (тех, которые не работают) - нет.

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

...