标签: asp.net-identity

从外部身份验证提供程序获取MVC5框架OAuth/OWin身份提供程序的ExtraData

我正在尝试在VS 2013预览中使用新的MVC5框架.

会员身份验证框架已经过彻底检查并替换为OWin.

特别是,我打开了外部身份验证提供程序Google auth.

这很简单.

只需取消注释这一行: app.UseGoogleAuthentication();在新的默认MVC项目的App_Start目录中的Startup.Auth.cs文件中.

因此,我希望访问来自身份验证提供程序的"额外数据",例如用户的头像的URL以显示在我的应用程序中.

在针对asp.net成员资格提供程序的旧OAuth实现下,有一种方法可以使用此处的ExtraData字典来捕获它:ProviderDetail.ExtraData属性.

我找不到关于OAuth和OWin如何协同工作以及如何访问这些额外数据的文档.

任何人都可以开导我吗?

asp.net-mvc owin visual-studio-2013 asp.net-mvc-5 asp.net-identity

30
推荐指数
3
解决办法
2万
查看次数

ASP.NET身份与简单会员优点和缺点?

在MVC4中,我们有简单会员资格.我的观点是,Simple Membership是一个很好的身份模型,经过良好的文档测试和测试,不需要修复,只需要在电子邮件验证/密码重置和我们通常必须处理的所有其他内容方面进行升级.构建应用程序.然而,新的ASP.NET身份模型似乎实现了Vista在XP上实现的某种程度.我的意思是AspnetUserClaims,AspnetLogins可能已经聚集在一起了UserAliases.微软应该为我的唠叨的电子邮件部分提供一些方法.刚刚根据可能欺骗我的问题的第一次看起来讨论了我的意见

我正在尝试决定是否应该从简单成员身份转移到新的 ASP.NET身份,但由于ASP.NET身份模型的文档和测试很稀疏,冲突且难以使用Google进行定位.那么有经验的人可以总结一下利弊吗?

asp.net-mvc asp.net-mvc-4 simplemembership asp.net-mvc-5 asp.net-identity

30
推荐指数
2
解决办法
2万
查看次数

身份提供者和Unity依赖注入

我已下载此示例,我可以在其中尝试ASP.NET MVC 5中的Identity Provider的功能:

http://www.nuget.org/packages/Microsoft.AspNet.Identity.Samples

我已经多次使用Unity DI来获取我的存储库,服务,工作单元和其他没有问题的东西.

但是现在,当我安装Unity DI时,我在使用身份提供程序的接口和DI上遇到了很多问题.

我刚刚下载了示例的代码并且我已经配置了Unity DI,但是我不想将Unity用于身份成员资格,我想使用Unity DI只是为了我的东西(IRepository,IService,IUnitOfWork等. )

我尝试注册用户时出现此错误:

当前类型Microsoft.AspNet.Identity.IUserStore`1 [Ecoavantis.Interactive.GCI.Models.ApplicationUser]是一个接口,无法构造.你错过了类型映射吗?

我读了一些帖子,其中他们说我必须包含这样的内容,但我不需要在Identity Provider中注入依赖项...

container.RegisterType<UserManager<ApplicationUser>>(new HierarchicalLifetimeManager());
            container.RegisterType<IUserStore<ApplicationUser>, UserStore<ApplicationUser>>(new HierarchicalLifetimeManager());
Run Code Online (Sandbox Code Playgroud)

有人可以帮我吗?

代码示例:

 /// <summary>Registers the type mappings with the Unity container.</summary>
        /// <param name="container">The unity container to configure.</param>
        /// <remarks>There is no need to register concrete types such as controllers or API controllers (unless you want to 
        /// change the defaults), as Unity allows resolving a concrete type even if it was not previously registered.</remarks>
        public static …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc dependency-injection asp.net-identity

30
推荐指数
4
解决办法
1万
查看次数

ASP.net身份禁用用户

在MVC 5中使用新的ASP.net标识,我们如何禁止用户登录?我不想删除它们,也许只是在一段时间内禁用它们的帐户.

有没有人对此有任何想法,因为我没有在ASPNetUsers表上看到状态列或任何内容.

asp.net-mvc-5 asp.net-identity

29
推荐指数
2
解决办法
3万
查看次数

"MVC5身份验证中的...与主域之间的信任关系失败"

我有一个ASP .NET MVC5应用程序,我没有使用Windows身份验证.

一切都工作正常,直到我尝试在开发它的域之外运行应用程序,并且(无论出于何种原因)得到了:

The trust relationship between this workstation and the primary domain failed.
Run Code Online (Sandbox Code Playgroud)

当我想要做的时候User.IsInRole("Admin").

我使用自定义的Identity,Role,IdentityStore,RoleStore,等从.NET的Identity,我可以看到用户和角色数据被从(MongoDB的)数据库中检索正确.

关于这个问题有很多问题,但是他们来自想要使用Windows Auth的人.和模仿他们的MVC应用程序:

那么,SystemException如果我没有使用Active Directory并且(据我所知)没有做任何可能取决于PC域的事情,我为什么要得到这个呢?我错过了一些配置(在我的Web.config或IIS Express中)?

编辑:

好的,所以缩小了一点......

我的User.IsInRole("Admin")行在if()我的_Layout.cshtml视图中的一个声明中(即,知道在导航栏中显示什么,取决于角色).

我现在知道在没有用户进行身份验证时我只得到上面的错误,而且我不在我用于dev的域中.如果我在该行上放置一个断点,我可以看到该User对象是a System.Security.Principal.WindowsIdentity,它的底层IdentitySystem.Security.Principal.WindowsIdentity.

另一方面,如果用户被认证,则User对象和ts IdentitySystem.Security.Claims.ClaimsPrincipalSystem.Security.Claims.ClaimsIdentity.

为什么它根本使用Windows身份(未经身份验证时)以及如何禁用它?

asp.net asp.net-mvc asp.net-mvc-5 asp.net-identity

29
推荐指数
2
解决办法
4万
查看次数

获取asp.net identity 2.0中具有指定角色的用户列表

我有一个列出角色的下拉列表框.我想获得具有该角色的用户列表.我的意思是"管理员"角色或"CanEdit"角色的用户列表.这是我的代码:

public IQueryable<Microsoft.AspNet.Identity.EntityFramework.IdentityUser> 
  GetRolesToUsers([Control] string ddlRole)
{    
  //ddlRole returns role Id, based on this Id I want to list users

  var _db = new ApplicationDbContext();
  IQueryable<Microsoft.AspNet.Identity.EntityFramework.IdentityUser> query = _db.Users;

  if (ddlRole != null)
  {
    //query = query.Where(e => e.Claims == ddlRole.Value);  ???????              
  }

  return query;
}
Run Code Online (Sandbox Code Playgroud)

请帮忙.

更新的代码(仍然错误)

public List<IdentityUserRole> GetRolesToUsers([Control]string ddlRole)
{

  var roleManager = 
   new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));
  var users = roleManager.FindByName("Administrator").Users.ToList();
  return users;
}
Run Code Online (Sandbox Code Playgroud)

错误:当ItemType设置为"Microsoft.AspNet.Identity.EntityFramework.IdentityUser"时,Select方法必须返回"IQueryable"或"IEnumerable"或"Microsoft.AspNet.Identity.EntityFramework.IdentityUser"之一.

我尝试了各种铸件,但没有一个帮助.

更新(工作解决方案)

感谢chris544,他的想法帮助我解决了这个问题.这是工作方法: -

public List<ApplicationUser> GetRolesToUsers([Control]string ddlRole)
{
  var context = …
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-mvc asp.net-mvc-4 asp.net-identity asp.net-identity-2

29
推荐指数
3
解决办法
5万
查看次数

在MVC Identity(2.0.1)中的regenerateIdentity/validateInterval持续时间后忽略ExpireTimeSpan

整天都在这个问题上摸不着头脑.我正在尝试在MVC Identity 2.0.1中设置"非常长"的登录会话.(30天).

我使用以下cookie启动:

      app.UseCookieAuthentication(new CookieAuthenticationOptions
        {

            SlidingExpiration = true,
            ExpireTimeSpan = System.TimeSpan.FromDays(30),
            AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
            LoginPath = new PathString("/My/Login"),
            CookieName = "MyLoginCookie",
            Provider = new CookieAuthenticationProvider
            {                           
                OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
                    validateInterval: TimeSpan.FromMinutes(30),

                    regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
            }
        });
Run Code Online (Sandbox Code Playgroud)

总的来说,工作正常.因此,cookie设置为30天,所有看起来都很好.

如果我关闭浏览器并在"validateInterval"持续时间过去之后回来(这里30分钟)我仍然登录,但是现在cookie仅作为"会话"重新发布(仍然是正确的cookie名称)!30天的到期消失了.

如果我现在关闭浏览器/再次重新打开,我将不再登录.

我已经测试了删除"提供者"并且所有工作都按预期进行,我可以在几个小时后回来并且我仍然可以正常登录.我读到最好使用邮票重新验证,所以我不确定如何继续.

asp.net-mvc identity asp.net-identity

29
推荐指数
1
解决办法
1万
查看次数

如何使用Windows Active Directory身份验证和基于身份的声明?

问题

我们希望使用Windows Active Directory对用户进行应用程序身份验证.但是,我们不希望使用Active Directory组来管理控制器/视图的授权.

据我所知,没有一种简单的方法可以将AD和基于身份的声明结合起来.

目标

  • 使用本地Active Directory对用户进行身份验证
  • 使用Identity框架来管理声明

尝试(失败)

  • Windows.Owin.Security.ActiveDirectory - Doh.这适用于Azure AD.没有LDAP支持.他们可以将其称为AzureActiveDirectory吗?
  • Windows身份验证 - 使用NTLM或Keberos身份验证时可以.问题始于:i)令牌和索赔都由AD管理,我无法弄清楚如何使用身份声明.
  • LDAP - 但这些似乎迫使我手动进行表单身份验证以使用身份声明?当然必须有一个更简单的方法吗?

任何帮助都不仅仅是值得赞赏的.我已经坚持这个问题很长一段时间了,并且会对这个问题的外部投入表示赞赏.

authentication claims-based-identity asp.net-identity visual-studio-2015 asp.net-core

29
推荐指数
3
解决办法
3万
查看次数

身份密码重置令牌无效

我正在编写MVC 5并使用Identity 2.0.

现在我想重置密码.但我总是收到重置密码令牌的"无效令牌"错误.

    public class AccountController : Controller
{
    public UserManager<ApplicationUser> UserManager { get; private set; }

    public AccountController()
        : this(new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext())))
    {
    }
Run Code Online (Sandbox Code Playgroud)

我设置了DataProtectorTokenProvider,

        public AccountController(UserManager<ApplicationUser> userManager)
    {   
        //usermanager config
        userManager.PasswordValidator = new PasswordValidator { RequiredLength = 5 };  
        userManager.EmailService = new IddaaWebSite.Controllers.MemberShip.MemberShipComponents.EmailService(); 

        var provider = new Microsoft.Owin.Security.DataProtection.DpapiDataProtectionProvider();
        userManager.UserTokenProvider = new Microsoft.AspNet.Identity.Owin.DataProtectorTokenProvider<ApplicationUser>(provider.Create("UserToken"))
                                                    as IUserTokenProvider<ApplicationUser, string>;




        UserManager = userManager;

    }
Run Code Online (Sandbox Code Playgroud)

我在发送邮件之前生成密码重置

 [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult> ManagePassword(ManageUserViewModel model)
    {
        if (Request.Form["email"] != null)
        {
          var email = …
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net-identity

28
推荐指数
3
解决办法
1万
查看次数

在Asp.Net Identtity中使用UserStore和UserManager有什么区别?

我是Asp.Net Identity的新手,如果这个问题看起来很愚蠢,请耐心等待.因此,当我在Microsoft网站上阅读下面链接中的UserStore类和UserManager类的定义时,看起来这两个类都定义了围绕用户的操作(如添加,查找,删除和修改).那么我何时使用一个而不是另一个?:

https://msdn.microsoft.com/en-us/library/dn315446(v=vs.108).aspx https://msdn.microsoft.com/en-us/library/dn613290(v=vs.108)的.aspx

c# asp.net-mvc owin asp.net-identity

28
推荐指数
3
解决办法
2万
查看次数