[英]ASP.NET Identity + Bearer Token + Multi-Tenant
我使用Entity Framework,WebAPI和ASP.NET Identity創建了一個多租戶應用程序。 基本上,它讀取租戶的子域並使用它從數據庫中讀取連接字符串並在運行時設置它。
一切都很棒,數據庫正在創建等,但現在唯一的問題是ASP.NET身份承載令牌。
當我為http://tenant1.#####.com/token生成一個承載訪問令牌時,似乎該令牌在同一個應用程序上簽名(沒有指定機器密鑰),它允許訪問http ://tenant2.#####.com控制器也是如此,因為它是不同的子域名/租戶。
這有什么辦法嗎? 或許我應該研究其他安全框架而不是ASP.NET身份?
MVC5可以輕松地將租戶名稱聲明添加到用戶身份。 在Models目錄中,編輯IdentityModels.cs
的ApplicationUser
類:
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
{
// Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
// Add claim for tenant name
userIdentity.AddClaim(new Claim("tenantName", "abcCompany");
// Add custom user claims here
return userIdentity;
}
然后,在處理經過身份驗證的請求時,驗證用戶是否包含正確的聲明和值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.