Stiamo provando a configurare Identity Server 3 nel modo corretto. L'autenticazione funziona correttamente e riusciamo a recuperare il token di aggiornamento.IdentityServer 3 aggiorna utente con token di aggiornamento
L'applicazione client utilizza Angolare.
Ora, quando acces_token termina le chiamate al resto, api non riesce (siamo riusciti a farlo restituire 401) ma ci stiamo chiedendo come autenticare nuovamente l'utente.
Nei nostri test, qualsiasi chiamata api effettuata da Javascript non riesce (401) ma non appena la pagina viene aggiornata l'intero meccanismo si avvia. Vediamo che siamo reindirizzati al server di identità ma non mostra fino alla pagina di accesso, verremo reindirizzati all'applicazione client con nuovi token apparentemente.
Quello che mi piacerebbe fare è aggiornare il token di accesso senza dover forzare l'utente ad aggiornare la pagina.
Ciò che non sono sicuro è di chi è la responsabilità? È l'applicazione client (sito Web) o l'applicazione angolare? In altre parole, se l'applicazione lo gestisce in modo trasparente per Angular o dovrebbe fare qualcosa angolare quando riceve un 401, nel qual caso, non sono molto sicuro di come le informazioni torneranno all'applicazione web.
Qualsiasi indizio?
Informazioni aggiuntive: Stiamo usando OpenID Connect
Ho lo stesso problema, suppongo che il Controller che visualizza l'applicazione e il/i Controller chiamato dal client (ajax) utilizzino un diverso tipo di Autenticazione, quindi 'app.UseOpenIdConnectAuthentication()' solo per il primo tipo, e per il secondo ... non lo so ma sto cercando di capire – Naigel
Sto iniziando a pensare che dovrei effettivamente spingere l'access_token e refresh_token verso il basso per l'applicazione js ma questo è un po 'brutto IMHO. Cercando di trovare un buon modo per farlo. Ho effettivamente visto come MS lo sta facendo nel portale di Azure e questo è decisamente sgradevole ... –
Il "secondo tipo" di autenticazione necessario dovrebbe essere qualcosa con il token al portatore, quindi "app.UseOpenIdConnectAuthentication' per le viste MVC e l'app .UseIdentityServerBearerTokenAuthentication' (o un altro portatore) per API. Nel frattempo la mia soluzione alternativa è l'estensione dei token nelle configurazioni client sul server Identity --- 'AccessTokenLifetime = 3600 * 12, // estensione da predefinito 3600 sec/1 ora a 12 ore' --- ' IdentityTokenLifetime = 300 * 20 * 12, // estendere da predefinito 300 sec/5 min a 12 ore – Naigel