C# Plaid Webhook Как декодировать

Я пишу Webhook для обработки автоматических микродепозитов для Plaid на С#. Я не совсем понимаю, как это должно работать, в основном потому, что примеры на других языках, которых я не знаю.

Моя первая проблема заключается в том, отправит ли мне Plaid строку? Я предполагаю, что Jwt - это строка?

Мой код:

            var token = "[someJwtstring]";
            var handler = new JwtSecurityTokenHandler();
            var jsonToken = handler.ReadJwtToken(token);

            //Get the Json Web Key from the API using the key id
            var verifyJwt = await _plaidRepo.VerifyWebHook(jsonToken.Header.Kid);
            var webkey = new JsonWebKey()
            {
                Alg = verifyJwt.Data.alg,
                Crv = verifyJwt.Data.crv,
                Kty = verifyJwt.Data.kty,
                Use = verifyJwt.Data.use,
                X = verifyJwt.Data.x,
                Y = verifyJwt.Data.y
            };

Так что до сих пор я понимаю... но что теперь? Что мне делать с веб-ключом, чтобы я мог получить тело запроса?


person yithril    schedule 24.09.2020    source источник
comment
Я понял! Веб-ключи JSON можно указать в параметрах проверки токена. Так что я мог бы сделать handler.ValidateToken(token, new TokenValidationParameters() { TokenDecryptionLey = webkey}, out var validatedToken)   -  person yithril    schedule 25.09.2020
comment
Не могли бы вы поделиться своим подходом? Спасибо   -  person Mustafa Mohammadi    schedule 07.11.2020


Ответы (1)


Я сейчас тоже пробую это.

Да, я думаю, что JWT будет строкой.

Я думаю, что это может сработать, если вы поместите webKey в параметры проверки токена.

var validationParameters = new TokenValidationParameters
{
  IssuerSigningKey = webKey
  //Some more parameters may be needed here for extra stuff like ClockSkew
};

Проверка токена с помощью обработчика токенов безопасности вернет ClaimsPrinciple с утверждениями, упомянутыми в клетчатом документе, такими как iat и request_body_sha256.

var handler = new JwtSecurityTokenHandler();
var claimsPrinciple = handler.ValidateToken("someJwtString", validationParameters, out var validatedToken);

Если проверка не пройдена, будет исключение

person rw_coder    schedule 09.01.2021