OpenID Connect ha endpoint di scoperta contenenti un endpoint JKWS per ottenere chiavi pubbliche per la convalida Token di identità e accesso.
Quindi ad esempio:
- Ho un'applicazione desktop che ottiene un token di identità dallo STS
- l'applicazione ottiene il jwks_uri dal documento Discovery
- l'applicazione ottiene le chiavi pubbliche da questo uri e convalida il token di identità
Quindi un aggressore man-in-the-middle (come malware su un PC) può:
- intercetta un token di identità dal STS, modificalo e firmalo con la sua chiave privata
- intercetta la richiesta jwks_uri e restituisce la propria chiave pubblica (s)
Ora l'attaccante può inviare qualsiasi cosa che gli piace senza che l'applicazione lo sappia?