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