Kalo te dokumentacioni
C#

Verifikoni webhook-ët

Kontrolloni nënshkrimin e një dorëzimi para se t'i besoni asaj që thotë.

Verifikoni një dorëzim

Program.cs
using OpenEmail; var builder = WebApplication.CreateBuilder(args);var app = builder.Build();var secret = builder.Configuration["OPENEMAIL_WEBHOOK_SECRET"] ?? string.Empty; app.MapPost("/webhooks/openemail", async (HttpRequest request) =>{    using var reader = new StreamReader(request.Body);    var payload = await reader.ReadToEndAsync();     try    {        var delivery = OpenEmailClient.VerifyWebhookSignature(payload, request.Headers["X-OpenEmail-Signature"], secret);         app.Logger.LogInformation("{Type} {Id}", (string?)delivery["type"], (string?)delivery["id"]);         return Results.NoContent();    }    catch (OpenEmailWebhookException)    {        return Results.BadRequest();    }}); app.Run();

OpenEmailClient.VerifyWebhookSignature() kontrollon HMAC-un e kokës mbi vulën kohore dhe trupin në kohë konstante, dhe e kthen ngjarjen si një JsonObject. Argumenti i dytë është vlera e kokës X-OpenEmail-Signature, dhe mbingarkesa të tjera marrin vetë kokat e kërkesës. Sekreti është ai që ktheu client.Webhooks.CreateAsync().

Jepni trupin e papërpunuar, pikërisht siç mbërriti. Një trup që është analizuar dhe koduar sërish nuk përputhet më me nënshkrimin e vet.

Dorëzime të vjetra

tolerance.cs
var payload = """{"id":"evt_1","type":"email.received"}"""; try{    OpenEmailClient.VerifyWebhookSignature(payload, "t=1767225600,v1=5f2d", "whsec_example", toleranceSeconds: 60);}catch (OpenEmailWebhookException error){    Console.WriteLine($"refused: {error.Message}");}

Një dorëzim më i vjetër se pesë minuta refuzohet, kështu që një kërkesë e kapur nuk mund të riluhet më vonë. toleranceSeconds: i ndryshon pesë minutat, dhe zeroja pranon një dorëzim të çdo moshe.

  • Një kokë që mungon ose është e keqformuar, një nënshkrim që nuk përputhet dhe një dorëzim tepër i vjetër hedhin të gjitha OpenEmailWebhookException.
  • Pasi një sekret rrotullohet, një dorëzim mund të mbajë më shumë se një nënshkrim, dhe mjafton që njëri të përputhet.
  • Përgjigjuni shpejt me një status 2xx. Një dorëzim që merr çdo përgjigje tjetër riprovohet më vonë.