2016-04-04 5 views
7

karşısında Owin kullanıcı belirteçleri doğrulamak Her iki sitenin de kullanıldığı bir derlemede tanımlanan UserManager. Startup.Auth.cs, iki site için özdeştir. Bununla birlikte, ilk sitede oluşturulan bir jeton, diğerinde geçerli değildir. belirteç üretmek için ilk web sitesinde kullanılanher iki web sitesi aslında aynı kullanmak, bunu Benim durumumda web 2.</p> <p>oluşturulan web 1 ASP.NET Kimlik kullanıcı belirteçleri, doğrulamak mümkün olmadığını bilmek istiyorum oluşturun ve etki

Kodu: Sonra başka bir web sitesine sorgu parametreleri olarak geçirilen

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 
} 

Doğrulama hep bu senaryoda başarısız olur. Jetonu, oluşturulduğu aynı sitede doğrularsam geçer.

var dataProtectionProvider = options.DataProtectionProvider; 

if (dataProtectionProvider != null) 
{ 
    manager.UserTokenProvider = 
     new DataProtectorTokenProvider<UserProfile>(dataProtectionProvider.Create("SomeName")); 
} 

bu davranış kasıtlı mı veya yanlış bir şey yapıyorum: Burada

belirteç sağlayıcısı (options.DataProtectionProvider zamanında tip CallDataProtectionProvider taşımaktadır) ApplicationUserManager yılında atandığı nasıl?

+0

Jetonu aynı sitede doğrularsanız, bunu oluşturulduğu yerdeki aynı eylemle doğrular mısınız? – tmg

+0

@tmg Aynı eylem ya da farklı eylem, her ikisi de işe yarar. – Knelis

cevap

7

Simge nesli ortaya çıkar ve doğrulama, makine anahtarını kullanır. Oluşturmak/doğrulamak için, web sitelerinin aynı machineKey yapılandırılmış olması gerekir.

İlgili konular