Vorrei sapere se è possibile convalidare ASP.NET Identity token utente sul sito web 1, generate sul sito 2.generare e convalidare Owin token utente tra domini
Nel mio caso, entrambi i siti effettivamente utilizzare lo stesso UserManager
, definito in un assembly utilizzato da entrambi i siti. Startup.Auth.cs
è identico per i due siti. Tuttavia, un token generato sul primo sito non riesce a convalidare sull'altro.
codice utilizzato sul primo sito web per generare token:
string userId = User.Identity.GetUserId();
var manager = HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
string token = await manager.GenerateUserTokenAsync("SomePurpose", userId);
poi passati come parametri di query per l'altro sito web:
var manager = HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
if (await manager.VerifyUserTokenAsync(userId, "SomePurpose", token))
{
// Do something
}
convalida non riesce sempre in questo scenario. Se convalido il token sullo stesso sito in cui è stato generato, passa.
Ecco come il provider di token viene assegnato a ApplicationUserManager
(options.DataProtectionProvider
è di tipo CallDataProtectionProvider
in fase di esecuzione):
var dataProtectionProvider = options.DataProtectionProvider;
if (dataProtectionProvider != null)
{
manager.UserTokenProvider =
new DataProtectorTokenProvider<UserProfile>(dataProtectionProvider.Create("SomeName"));
}
È questo il comportamento intenzionale o sto facendo qualcosa di sbagliato?
Se si convalida il token sullo stesso sito, lo si convalida nella stessa azione in cui è stato generato? – tmg
@tmg Stessa azione o azione diversa, entrambi funzionano. – Knelis