Asp.net
跨域生成和驗證 OWIN 使用者令牌
我想知道是否可以在網站 1 上驗證網站 2 上生成的 ASP.NET 身份使用者令牌。
就我而言,兩個網站實際上都使用相同的
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")); }這種行為是故意的還是我做錯了什麼?
事實證明令牌生成和驗證使用機器密鑰。要生成/驗證,網站需要進行相同的
machineKey配置。