Как вернуть ключ RSA в конечной точке jwks_uri для OpenID Connect Discovery

Работая над частью обнаружения поставщика OpenID Connect, я немного запутался в том, как правильно вернуть мои открытые ключи . Моя проблема связана именно с значениями modulus (n) и exponent (e) .

Начальные значения обоих параметров:

 n = 124692971944797177402996703053303877641609106436730124136075828918287037758927191447826707233876916396730936365584704201525802806009892366608834910101419219957891196104538322266555160652329444921468362525907130134965311064068870381940624996449410632960760491317833379253431879193412822078872504618021680609253 e = 65537 

Итак, что я понимаю, читаю здесь , просто нужно, чтобы base64url кодировал оба.

(Пример в Python)

 n = urlsafe_b64encode(str(n)) e = urlsafe_b64encode(str(e)) n = "MTI0NjkyOTcxOTQ0Nzk3MTc3NDAyOTk2NzAzMDUzMzAzODc3NjQxNjA5MTA2NDM2NzMwMTI0MTM2MDc1ODI4OTE4Mjg3MDM3NzU4OTI3MTkxNDQ3ODI2NzA3MjMzODc2OTE2Mzk2NzMwOTM2MzY1NTg0NzA0MjAxNTI1ODAyODA2MDA5ODkyMzY2NjA4ODM0OTEwMTAxNDE5MjE5OTU3ODkxMTk2MTA0NTM4MzIyMjY2NTU1MTYwNjUyMzI5NDQ0OTIxNDY4MzYyNTI1OTA3MTMwMTM0OTY1MzExMDY0MDY4ODcwMzgxOTQwNjI0OTk2NDQ5NDEwNjMyOTYwNzYwNDkxMzE3ODMzMzc5MjUzNDMxODc5MTkzNDEyODIyMDc4ODcyNTA0NjE4MDIxNjgwNjA5MjUz" e = "NjU1Mzc=" 

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

(Значения ключа Google)

 n = "rl1iVsRbhod-gDJj2SDs94lk5iY0QYXV5HIPtjcx4KmIlmq-cdmfLteTeIHFsO5c6hKUt8R3uZzaQNgF3fKt700fT4m6tU23qK4EoLlx9Z_uSajtpMajdmX_FOdyHyQgcn0tj3YqPeYCOTBhRVNoLIenf9vy0hfFy71lcPhylnE", e = "AQAB" 

Я что-то упускаю? Спасибо за ваше время.

PD: Проект, над которым я работаю .

One Solution collect form web for “Как вернуть ключ RSA в конечной точке jwks_uri для OpenID Connect Discovery”

Вы base64url-кодирование десятичного представления значений, но вы должны base64url-кодировать значение октета, то есть байтовую последовательность байтов, как определено здесь: https://tools.ietf.org/html/rfc7518#section-6.3 .1.1 и здесь https://tools.ietf.org/html/rfc7518#section-2

Base64urlUInt

Представление положительного или нулевого целочисленного значения в качестве base64url-кодирования знакового знакового представления в виде последовательности октетов. Последовательность октетов ДОЛЖНА использовать минимальное количество октетов, необходимых для представления значения. Zero представлен как BASE64URL (одиночный нулевой значный октет), который является «AA».

Python - лучший язык программирования в мире.