Sto utilizzando Identità ASP.Net per implementare account di accesso esterni. Dopo che l'utente ha effettuato l'accesso con Google, ottengo il token di accesso esterno di Google. Quindi effettuo una seconda chiamata API a ObtainLocalAccessToken() che scambia il token di accesso esterno per una nuova local.Verifica token di accesso - Identità Asp.Net
ObtainLocalAccessToken()
chiamate VerifyExternalAccessToken() che verifica il token di accesso esterno con il provider effettuando manualmente le chiamate http e analizzando l'id_utente.
Come posso sfruttare l'identità di ASP.NET per rimuovere l'intero metodo VerifyExternalAccessToken()
?
Credo che sia quello che lo è [HostAuthentication(DefaultAuthenticationTypes.ExternalBearer)]
no? Voglio decorare l'endpoint ObtainLocalAccessToken()
con quell'attributo e inviare il external_access_token nell'intestazione ({'Authorization' : 'Bearer xxx' }
) e dovrebbe compilare User.Identity
senza la necessità di verificare manualmente il token di accesso esterno? Credo che sia lo scopo, ma non riesco a farlo funzionare. Mando un token di accesso esterna valida da parte di Google e viene rifiutato con un 401.
ho questa linea in Startup.Auth btw:
app.UseOAuthBearerTokens(new OAuthAuthorizationServerOptions
{
TokenEndpointPath = new PathString("/Token"),
Provider = new ApplicationOAuthProvider(),
AuthorizeEndpointPath = new PathString("/AccountApi/ExternalLogin"),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
AllowInsecureHttp = true
});
In alternativa, è possibile usare "/ Token" endpoint scambiare un token di accesso esterno per uno locale? Quale approccio è corretto?
Farò una congettura selvaggia qui.Ma tutti i servizi che uso da google sono attraverso https. È possibile che non sia possibile utilizzare AllowInsecureHttp = true? Dal momento che il tuo errore è un 401, sono abbastanza sicuro che significa che una chiamata a http non è consentita. – GELR
Beh, non posso ancora usare ssl, quindi ho bisogno che funzioni con http, come fa con la mia applicazione web (ma non con il cellulare). Ma ho ragione a capire che [HostAuthentication (DefaultAuthenticationTypes.ExternalBearer)] dovrebbe popolare il principio quando si invia un token di accesso esterno? In tal caso, come farebbe a sapere da quale provider proviene il token di accesso? – parliament
E oltre a 401 = Non autorizzato. "L'autorizzazione è stata negata per questa richiesta." – parliament