Ho quasi esattamente lo stesso problema con due miei servizi.
Sto seguendo un percorso leggermente diverso per risolverlo a causa del seguente ragionamento: cosa succede se a causa di un errore di configurazione del firewall o di un router, il servizio B diventa improvvisamente disponibile su Internet o sulla rete interna della mia compagnia? Abbiamo modificato le regole del firewall senza che venissimo informati dei cambiamenti avvenuti in passato; quindi sono cresciuto attento.
Ecco cosa sto facendo attualmente: i servizi A e B condividono una password segreta che solo loro conoscono. Lo uso per costruire un hmac su una piccola struttura json (il mio "token di accesso") sul servizio A che contiene fondamentalmente il nome utente dell'utente autenticato, un nonce e una data di scadenza. Passo il token di accesso e hmac al servizio B (come una lunga stringa con codifica Base64 nell'intestazione Autorizzazione standard). Il servizio B convalida il token di accesso utilizzando hmac e, se viene estratto, può essere ragionevolmente sicuro che il token di accesso ricevuto provenisse dal servizio A. Tutto ciò che rimane è assicurarsi che il token di accesso non sia scaduto.
Potresti fare lo stesso con una JWT e con la crittografia a chiave pubblica per firmare digitalmente il token di accesso, invece di quello che sto facendo con un hmac.
Questo non è molto diverso da quello che stai facendo - costruire il mio token di accesso (solo una volta, quando l'utente accede al servizio A) non è molto lavoro, e nessuno dei due sta verificando il token sul servizio B, ma aggiunge ulteriore sicurezza, rispetto alla soluzione.
Proprio come te, sarei interessato a risposte che descrivono un modo generalmente accettato di risolvere questo problema - ho sempre pensato che la mia soluzione fosse un po 'troppo cresciuta in casa e potessi soffrire di problemi che non posso immediatamente vedere.