7
OWIN用戶令牌我想知道它是否能夠驗證網站上的1 ASP.NET用戶身份令牌,在網站2生成和驗證跨域
產生在我的情況下,這兩個網站實際上使用相同UserManager
,這是在兩個站點使用的程序集中定義的。 Startup.Auth.cs
是兩個網站的身份。但是,第一個站點上生成的令牌無法在另一個站點上驗證。在第一個網站用於生成令牌
代碼:
string userId = User.Identity.GetUserId();
var manager = HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
string token = await manager.GenerateUserTokenAsync("SomePurpose", userId);
然後作爲查詢參數傳遞給其他網站:
var manager = HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
if (await manager.VerifyUserTokenAsync(userId, "SomePurpose", token))
{
// Do something
}
驗證總是失敗,在這種情況下。如果我在生成它的同一網站上驗證令牌,它會通過。
這裏的令牌供應商是如何在ApplicationUserManager
分配(options.DataProtectionProvider
是CallDataProtectionProvider
類型在運行時):
var dataProtectionProvider = options.DataProtectionProvider;
if (dataProtectionProvider != null)
{
manager.UserTokenProvider =
new DataProtectorTokenProvider<UserProfile>(dataProtectionProvider.Create("SomeName"));
}
這種行爲是故意的還是我做錯了什麼?
如果您在同一網站上驗證令牌,您是否在生成它的相同操作中驗證該令牌? – tmg
@tmg相同的行動或不同的行動,兩者都有效。 – Knelis