我可以使用aspnetidentity和ActiveDirectory



我一直在寻找使用ASP.NET身份和各种提供商使用Facebook,Twitter等提供身份验证的示例。

我有一个MVC 6解决方案,目前是使用VS2015 RC开发的。它将部署到组织IIS。AD主要用于对用户进行身份验证,其中大多数通过本地网络或远程验证的域进行身份验证。

但是,有些用户可能会在没有域帐户的情况下通过Internet访问系统。或这些用户将注册,管理员将批准该帐户,并在应用程序数据库中本地分配角色和权限。

项目团队要求在本地网络上或在域上进行以其他方式验证的用户不需要登录。

AD正在使用,但据我所知,ADFS均未使用。

这甚至可能吗?我相信我需要的是AD的OWIN提供商,但是Microsoft One似乎与ADF或AAD一起使用。

谢谢。

您绝对可以使用Internet注册的用户使用ASP.NET身份。

您还可以使用以下Nuget软件包使用ASP.NET身份来登录广告用户,但是Windows用户信息(仅使用用户名,电子邮件)需要存储在您的应用程序数据库中。

https://github.com/mohammadyounes/owin-mixedauth

实现此Nuget软件包后,只需执行此操作以对Windows用户进行身份验证。

在IdentityConfig文件中添加此方法,并在Windows用户登录时调用此方法。

public async Task<SignInStatus> WindowsLoginAsync(string userName, string password, bool isPersistent)
    {
        var signInStatus = SignInStatus.Failure;
        using (var context = new PrincipalContext(ContextType.Domain, <your_domain_name>))
        {
        var valid = context.ValidateCredentials(userName, password);
        if (valid)
        {
            UserPrincipal userPrincipal = UserPrincipal.FindByIdentity(context, userName);
            if (userPrincipal != null)
            {
                var loginInfo = new ExternalLoginInfo
                {
                    Login = new UserLoginInfo("Windows", userPrincipal.Sid.ToString())
                };
                signInStatus = await ExternalSignInAsync(loginInfo, isPersistent);
                return signInStatus;
            }
            }
        }
        return signInStatus;
    }

这基本上将使用Windows和Web用户的Cookie身份验证。对用户进行身份验证后,您需要在数据库中添加Windows用户,并在IdentityUserlogin表中添加loginProvider作为" Windows"和ProviderKey作为userprinCipal.SID的记录,然后call signInnInager.SignInAger.SignInAsync登录用户。p>使用这种方法,我相信Windows用户也可以通过Internet登录,您的组织可能不喜欢它。

希望这会有所帮助!

相关内容

  • 没有找到相关文章

最新更新