/ / Convalida del certificato di firma quando si utilizza OpenId Connect: certificato, jwt, openid-connect, identityserver3

Convalida del certificato di firma quando si utilizza OpenId Connect: certificato, jwt, openid-connect, identityserver3

Sto cercando di capire se il mio Web Api ospitato da Owin deve convalidare il certificato utilizzato per firmare un token JWT.

Ho creato un provider di identità usando IdentityServer. Sul lato "relying party", ho un ASP.NET WebApi ospitato utilizzando Owin. Sul lato RP, sto usando UseOpenIdConnectAuthentication per installare OpenIdConnectAuthenticationMiddleware nella pipeline Owin.

Cosa sta funzionando finora:

  1. Qualsiasi utente non autenticato che visita la mia app Web viene reindirizzato alla pagina di accesso su IdentityServer
  2. L'utente accede
  3. L'utente viene reindirizzato alla mia app Web
  4. La mia app Web riceve il JWT che contiene il token id e il token di accesso
  5. La mia app Web chiama l'endpoint di informazioni dell'utente per recuperare le attestazioni utilizzando il token di accesso

Quello che mi manca è la logica per convalidare il certificato che è stato utilizzato per firmare il JWT che contiene il token di identità.

Usando Fiddler, sono stato in grado di vedere che OpenIdConnectAuthenticationMiddleware recupera le chiavi dal server di identità (chiamando https://myidentityserver.example.com/core/.well-known/jwks HTTP / 1.1)

OpenIdConnectAuthenticationMiddleware esegue un qualche tipo di convalida del certificato? O dovrei scrivere questo codice da solo?

risposte:

1 per risposta № 1

Il flusso che descrivi si basa sul fatto che ilil certificato di verifica viene estratto da un endpoint protetto TLS (URL JWKs) che presenta un certificato server SSL valido. Questo certificato server SSL garantisce che stai parlando con il giusto fornitore di OpenID Connect.


0 per risposta № 2

Ho trovato alcune spiegazioni Qui

Per validare i token di riferimento forniamo aendpoint semplice chiamato endpoint di convalida del token di accesso. Questo endpoint è ad es. utilizzato dal nostro middleware di convalida dei token di accesso, che è abbastanza intelligente da distinguere tra token di riferimento (JWT) e di riferimento e esegue la convalida a livello locale o utilizzando l'endpoint. Tutto ciò è completamente trasparente per l'API.

Basta specificare l'Authority (l'URL di base di IdentityServer) e il middleware lo utilizzerà per estrarre la configurazione (chiavi, nome dell'emittente, ecc.) E costruire l'URL per l'endpoint di convalida