Tag: asp.net identity 2

Asp.Net Identity和多种登录机制

我想创建一个尽可能对不同登录机制开放的应用程序。 所以我使用了Asp.Net Identity。 对于(几乎)免费,这个系统给了我: 简单的帐户 OpenID与Facebook,微软,谷歌等 如果您使用其他模板,您还可以使用具有以下3个选项的组织帐户: 云 – 单一组织 云 – 多个组织 内部部署 我的用例显示我需要混合所有这些: 想要简单帐户的用户 想要与OpenID连接的用户 使用Office 365并希望通过我们的应用程序进行SSO的公司 正在使用内部部署Active Directory并希望通过我们的应用程序进行SSO的公司 虽然我可以单独找到每个点的大量文档,但我找不到一个可以描述如何在同一个应用程序中使用它们的文档。 那么,它可能吗? 当然,如果是的话,我们应该如何让它发挥作用? 谢谢,

Authorize和GetRoles在ASP.NET标识中不起作用

我使用entity framework实现使用ASP.NET Identity 2.1.0。 身份validation工作正常但基于角色的安全性存在问 虽然我已经为用户添加了角色,但此代码返回空: var roles= UserManager.GetRoles(User.Identity.GetUserId()); 此外,基于登录用户角色的授权失败。 当用户重定向到下面的控制器时,应用程序会将他重定向到登录页面。 [Authorize(Roles = “Admin”)] public abstract partial class AdminAreaController : Controller { 为了添加ASP.NET标识,首先,我创建了自定义用户类来添加配置文件数据: public class BasemapUser : IdentityUser { [MaxLength(100)] public string Name { get; set; } [MaxLength(100)] public string CompanyName { get; set; } public async Task GenerateUserIdentityAsync(UserManager manager) { // Note the authenticationType […]

OWIN AuthenticationOptions在运行时在mvc5应用程序中更新

嗨! 情况如下: 我在iis7上有一个带有Identity2的MVC5应用程序,可以为多个网站提供服务。 主机名是某些网站的关键。 site.com,anothersite.com等 我决定在我的所有网站上使用google进行外部登录,并且每个网站都应该是具有个人clientid和clientsecret的google客户端。 例如: site.com – clientid = 123123,clientsecret = xxxaaabbb anothersite.com – clientid = 890890,clientsecret = zzzqqqeee 但有一点问题 – 在应用程序的开始设置AuthenticationOptions ,我没有找到任何方法在运行时替换它。 所以,在阅读为MVC 5创建自定义OAuth中间件和编写Owin身份validation中间件后,我意识到我应该覆盖AuthenticationHandler.ApplyResponseChallengeAsync()并将这段代码放在这个方法的开头: Options.ClientId = OAuth2Helper.GetProviderAppId(“google”); Options.ClientSecret = OAuth2Helper.GetProviderAppSecret(“google”); 我决定只使用谷歌,所以我们将谈论谷歌中间件。 AuthenticationHandler AuthenticationMiddleWare.CreateHandler()返回AuthenticationMiddleWare.CreateHandler() ,在我的例子中,它们是GoogleOAuth2AuthenticationHandler和GoogleOAuth2AuthenticationMiddleware 。 我在http://katanaproject.codeplex.com/上找到了GoogleOAuth2AuthenticationMiddleware并将其GoogleOAuth2AuthenticationMiddleware我的项目中 public class GoogleAuthenticationMiddlewareExtended : GoogleOAuth2AuthenticationMiddleware { private readonly ILogger _logger; private readonly HttpClient _httpClient; public GoogleAuthenticationMiddlewareExtended( […]

在Identity Custom User之后,User.Identity.GetUserId()将错误的类型返回为字符串

我为entity framework和asp.net身份创建了自定义用户模型。 我在这里检查了其他答案,他们接近我的问题,但答案不符合我的要求。 所以我在这里问。 一切都好。 但是当我尝试获得用户ID时: ApplicationUser user = await manager.FindByIdAsync(User.Identity.GetUserId()); User.Identity.GetUserId()返回字符串。 我像Guid一样配置它。 但它返回字符串:( 我的课程在这里。 请帮助我,如何在Web api控制器中将User.Identity.GetUserId()作为Guid获取? public class GuidUserLogin : IdentityUserLogin { } public class GuidUserRole : IdentityUserRole { } public class GuidUserClaim : IdentityUserClaim { } public class GuidRole : IdentityRole { } //public class GuidUserContext : IdentityDbContext { } public class GuidUserStore […]

如何向User.Identity添加另一个Propertys来自身份2.2.1中的表AspNetUsers

我首先在asp.net身份2.2.1(AspNetUsers表)代码中添加一些新属性 public class ApplicationUser : IdentityUser { public string AccessToken { get; set; } public string FullName { get; set; } public string ProfilePicture { get; set; } public async Task GenerateUserIdentityAsync(UserManager manager) { // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie); // Add custom user […]

ASP.NET Identity 2 UserManager使所有用户都异步

有人可以告诉你是否有办法让所有用户在ASP.NET Identity 2中异步? 在UserManager.Users中没有任何异步或找到所有异步或类似的somwething

坚持要求的索赔

var user = UserManager.Find(…); ClaimsIdentity identity = UserManager.CreateIdentity( user, DefaultAuthenticationTypes.ApplicationCookie ); var claim1 = new Claim( ClaimType = ClaimTypes.Country, ClaimValue = “Arctica”, UserId = user.Id ); identity.AddClaim(claim1); AuthenticationManager.SignIn( new AuthenticationProperties { IsPersistent = true }, identity ); var claim2 = new Claim( ClaimType = ClaimTypes.Country, ClaimValue = “Antartica”, UserId = user.Id ); identity.AddClaim(claim2); 只有在ClaimsIdentity用户登录时, ClaimsIdentity和claim2才会在请求中保留。 […]

通过ASP.NET身份2中的UserManager.Update()更新用户

我在MVC 5项目中使用ASP.NET Identity 2 ,我想使用UserManager.Update()方法更新Student数据。 但是,当我从ApplicationUser类inheritance时,我需要在调用update方法之前将Student映射到ApplicationUser 。 另一方面,当使用我也用于创建新Student的方法时,由于并发性而导致错误,因为我创建了一个新实例而不是更新。 由于我无法使用AutoMapper解决问题,我需要一个稳定的修复来解决问题,而无需AutoMapper 。 能否请您澄清如何解决这个问题? 我将StudentViewModel传递给StudentViewModel中的Update方法,然后我需要将它映射到Student,然后将它们作为ApplicationUser传递给UserManager.Update()方法。 另一方面,我想知道我是否应该在Controller阶段检索并发送密码,而不是为安全问题转到View? 你能否告诉我这个问题(在用户更新期间我不更新密码,我必须在数据库中保留用户的密码)。 任何帮助,将不胜感激。 实体类: public class ApplicationUser : IdentityUser, IUser { public string Name { get; set; } public string Surname { get; set; } //code omitted for brevity } public class Student: ApplicationUser { public int? Number { get; set; } } […]

ASP.NET身份2记住我 – 用户被注销

我在我的MVC5应用程序中使用Identity 2.1。 我将PasswordSignInAsync的isPersistent属性设置为true以启用“记住我”: var result = await SignInManager.PasswordSignInAsync(model.Username, model.Password, true, shouldLockout: false); 但是,如果我一夜之间保持登录状态,那么当我在早上刷新页面时,它会将我退出,我必须再次登录。 在用户手动注销之前,如何防止自动注销? 是否与身份使用的Cookie身份validation有关? 我真的不了解Startup.Auth.cs中设置的CookieAuthenticationOptions。 new CookieAuthenticationProvider { OnValidateIdentity = SecurityStampValidator .OnValidateIdentity( validateInterval: TimeSpan.FromMinutes(30), regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)) }

我应该将我的应用程序上下文与用于标识的ApplicationDbContext分开吗?

在Visual Studio 2013中,创建ASP.NET项目时,它会生成一个文件IdentityModels.cs ,其中包含一个ApplicationDbContext类,该类inheritance自IdentityDbContext ,最终inheritance自DbContext 。 我应该仅为帐户相关实体保留此上下文,并为应用程序中的所有其他实体创建单独的上下文,还是应该将其混合使用。 任何安全问题或理由不在一个上下文中包含我的整个应用程序的所有实体?