Я пытаюсь интегрировать GIT на свой сайт. Я успешно реализовал инструментарий и хочу проверить JWT, отправленный из Google API, с сертификатом * .p12, предоставленным во время установки.Исключить проверку подлинности проверки токена идентификатора инструмента Google с помощью обработчика токена .NET JSON
Сведения об исключении: System.IdentityModel.SignatureVerificationFailedException: IDX10501: Ошибка подтверждения подписи. Ключ пытался: «System.IdentityModel.Tokens.X509SecurityKey».
JSON Web Токен Поступило: фишку: «{ "ALG": "RS256", "ребенок": "qwYevA"}. { "ИСС": "https://identitytoolkit.google.com/", "ауд":" 238895676270-i8o5fe2poogs83nki8jl5tgtfm7h9n5l.apps .googleusercontent.com " "IAT": 1445739256, "ехр": 1446948856, "user_id": "", "электронная почта": "", "provider_id": "google.com", "проверено": правда," display_name «:» "}»
var signingToken = new X509SecurityToken(new X509Certificate2(fileName, "notasecret"));
TokenValidationParameters validationParameters =
new TokenValidationParameters()
{
IssuerSigningKey = new X509SecurityKey(new X509Certificate2(fileName, "notasecret")),
ValidAudience = "238895676270-i8o5fe2poogs83nki8jl5tgtfm7h9n5l.apps.googleusercontent.com",
ValidIssuer = "https://identitytoolkit.google.com/",
IssuerSigningKeyResolver = (token, a, ski, tvp) => { return new X509SecurityKey(new X509Certificate2(fileName, "notasecret")); },
IssuerSigningToken = signingToken,
};
SecurityToken st;
var result = tokenHandler.ValidateToken((Request.Cookies["gtoken"]).Value, validationParameters, out st);
Спасибо Цзинь. Можете ли вы подробнее рассказать о том, как я могу создать сертификат с использованием publicKeys в .NET? Какая польза от * .p12, упомянутого в документах? Кажется, что каждый пример в документах использует * .p12. – user3220309
Я не специалист по .NET, но, вероятно, вы можете использовать что-то вроде нового X509Certificate2 (Convert.FromBase64String (certString)) , где certString можно загрузить, как описано выше. Файл .p12 содержит ваш собственный секретный ключ, который вы можете использовать для подтверждения своей учетной записи разработчика при вызове API в Google. Кто-либо еще не знает ваш секретный ключ, поэтому они не могут получить доступ к вашим данным проекта в Google. Открытый сертификат Google Identity Toolkit используется для другого направления - вашему серверу необходимо проверить, что IdToken действительно выдан Google Identity Toolkit. –
Получил! Для любого в/из будущего, путь, который сертификат передается из запроса GET по методу publicKeys, необходимо преобразовать в действительный текст для метода FromBase64String (поскольку он отправлен raw). В моем случае я сбивал с толку \ n как допустимые символы в сертификате. Спасибо Джин. – user3220309