Carriera in entrata SMS webhook (MS1 Task 2)

FeatureVOIPService
Spegnimento
27 agosto 2026 alle ore 18:34 UTC
Autore
Kamo
Impegno
1899050

# POST # -- codificato o JSON, sorvegliato dal L'immagine di CARRIER e' OWN. Perché un nuovo endpoint. /api/voip/webhook non può ricevere un STOP e non riesce silenziosamente: leggeTree()s il corpo senza restrizioni `consuma`, ogni porta-testo Nessun post E' il momento giusto. la parsa getta, l'eccezione è ingoiato e il vettore è risposto 200 OK -- quindi non si ritirerà mai. Confermato nella fonte corrente prima di scrivere questo. Perché questa strada? ****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** e corrisponde con startWith, quindi qualsiasi cosa sotto di esso richiede un X-Internal-Auth intestazione un vettore non può inviare. /api/bulktext/inbound è un SIBLING di /send, è aggiunta a ************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** in InternalAuthFilter. Firma di Twilio: HMAC-SHA1 sopra l'URL completo (compresa la stringa di richiesta) Parametri POST aggiuntiva nome-allora valore in ordine ordinato sesensibile, base64, rispetto a X-Twilio-Signature con MessageDigest.isEqual. Verifica contro Documentazione di sicurezza di Twilio, poi incrinato al vettore pubblicato da Twilio-java RichiestaValidatorTest (token 12345 -> RSOYDt4T1cUTdK1PDd93/VVVr8B8=), quindi il test non può passare per un algoritmo sbagliato. Modellato su MicrosoftTeamsProvider (segreto vuoto -> log + falso; eccezione -> falso; costante-tempo confrontare); NON su RingCentralProvider 'ritorno vero; // TODO`, e RingCentralSignatureUtil uguale IgnoreCase non è riutilizzato. L'URL firmato è ricostruito da X-Forwarded-Proto/Host, non ottenereRequestURL(). The bordo termina TLS, quindi ottenereRequestURL() restituisce lo schema del contenitore e host, che non è quello che Twilio ha firmato -- ogni firma fallirebbe e Il fallimento sembrerebbe esattamente un falso. FLOWROUTE E' PARSE-ONLY e STILL si rifà a tutti. Flowroute non pubblica firma webhook: i suoi documenti di messaggio in entrata specificano l'URL di callback, il applicazione/vnd.api+json tipo di contenuto e la forma di carico utile, e nessuna firma intestazione, schema HMAC o segreto condiviso. Non c'è nulla da verificare, quindi continua il difetto-chiuso di default piuttosto che ottenere uno schema inventato -- un inventato uno respingerebbe tutto il traffico reale o sarebbe scritto per tornare vero, che è la superficie di falsificazione che questa interfaccia esiste per prevenire. Anche Flowroute non fa post form-encoded, quindi `consumes ` accetta vnd.api+json troppo. Sinch, Infobip e Il Vonage è unimplementato su entrambi i metodi e registra un nome di avviso. Prove TDD --- Rosso (classe assente): [ERROR] E' il momento giusto. non può trovare il simbolo simbolo: classe BulkTextInboundController posizione: classe ************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************ Green: Test eseguiti: 27, guasti: 0, errori: 0, saltato: 0 Mutazione 1 -- L'Uno i nomi del PLAN, e non prova nulla. Plan Task 2 Step 8 dice: fare validateWebhookSignature predefinito a `true` e aMissingWebhookSecretRejects deve andare rosso. Osservato: Test eseguiti: 24, guasti: 0, errori: 0, saltato: 0 [INFO] Non e' successo niente di rosso. Ogni test drive Twilio, che supera il default, quindi il difetto chiuso è stato esercitato da nessun test affatto e potrebbe essere stato silenziosamente invertito in qualsiasi momento -- trasformando quattro vettori da "rifonda tutto" in "accetta nulla" su un punto finale dove accettare qualsiasi cosa lascia uno sconosciuto revocare il consenso del consumatore. Chiuso aggiungendo ****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** implementazione e sui quattro vettori reali che si affidano a esso. Re-running the same mutazione contro di essa: E' il momento giusto. E' il momento giusto. [un vettore unimplementato non deve mai accettare un webhook inverificabile] Aspettando il valore di essere falso, ma era vero E' il momento giusto. E' il momento giusto. [SinchTextProvider deve fallire chiuso] Aspettando il valore di essere falso, ma era vero Mutation 2 -- quello che effettivamente bersaglia il test di nome del piano: Twilio la guardia vuota-authToken è cambiata da `return false` a `return true`. Osservato: E' il momento giusto. E' il momento giusto. previsto: 403 ma era: 200 E' il momento giusto. E' il momento giusto. Aspettando il valore di essere falso, ma era vero Mutation 3 -- il tipo di parametro invertito (TreeMap ordine naturale -> Comparator.reverseOrder()), per mostrare il test dell'algoritmo non è vacuo: E' il momento giusto. E' il momento giusto. Aspettare il valore per essere vero ma era falso E' il momento giusto. E' il momento giusto. previsto: 200 ma era: 403 Tutte e tre le mutazioni sono ritornate. Suite completa dopo la deviazione: Test eseguiti: 290, guasti: 0, errori: 0, saltato: 0 / COSTRUZIONE Spazi noti, deliberati e registrati a runtime E' il momento giusto. * Un messaggio in entrata verificato è riconosciuto e LOGGGED MA NON RICHIESTA. The hand-off a SmsKeywordService è un TODO marcato perché quella classe arriva Compito 3. Questo endpoint non sopprime ancora nulla. * La risoluzione di Org esegue la scansione di istanze attive e corrisponde al numero con ContattoCanon.phone. Non c'è inventario numerico -- l'unico record di proprietà è il singolo nullable FROM PHONE NUMBER su BulkTextProviderInstance, senza ricercatore e nessun indice. Nessuna corrispondenza, o una corrispondenza tra due org, attribuisce messaggio a nessuno e registri; indovinare un inquilino registrerebbe una revoca contro quello sbagliato, che è peggio di non registrarlo. Ha bisogno di ADD5/MS3. * InboundSms non trasporta alcun timestamp vettore: Twilio in entrata SMS webhook non Mandane uno. Task 3 "consentedAt viene dall'evento vettore, mai ora()" è quindi non soddisfatta per Twilio. Refs: E' il momento giusto. Compito 2

Tutte le modifiche

Come quello che vedi la spedizione?

Ognuno di questi aggiornamenti atterra automaticamente nello spazio di lavoro. Inizia gratis e guardalo crescere settimana dopo settimana.

Inizia gratis per sempreVisualizza il prezzo