Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 是否在Azure中使用同步的Active Directory验证用户(包括组)?_Asp.net Mvc_Azure_Active Directory_Azure Active Directory - Fatal编程技术网

Asp.net mvc 是否在Azure中使用同步的Active Directory验证用户(包括组)?

Asp.net mvc 是否在Azure中使用同步的Active Directory验证用户(包括组)?,asp.net-mvc,azure,active-directory,azure-active-directory,Asp.net Mvc,Azure,Active Directory,Azure Active Directory,我正在将一个应用程序移植到azure,在该应用程序中,我们使用Active Directory对用户进行身份验证,如下所示: var user = model.UserName.Split('\\'); using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, user[0])) { if (pc.ValidateCredentials(user[1], model.Password, ContextOpt

我正在将一个应用程序移植到azure,在该应用程序中,我们使用Active Directory对用户进行身份验证,如下所示:

var user = model.UserName.Split('\\');
using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, user[0]))
{
    if (pc.ValidateCredentials(user[1], model.Password, ContextOptions.Negotiate))
    {
        using (var adUser = UserPrincipal.FindByIdentity(pc, IdentityType.SamAccountName, user[1]))
        {
            if (!MembershipService.ValidateUser(model.UserName, model.Password))
            {
                using (var userDb = new UsersDbContext())
                {
                    if (userDb.aspnet_Users.Count(u => u.UserName.ToLower().Contains(model.UserName)) <= 0)
                        MembershipService.CreateUser(model.UserName, model.Password, adUser.EmailAddress);
                    else
                    {
                        var msUser = Membership.GetUser(model.UserName);
                        msUser.ChangePassword(msUser.ResetPassword(), model.Password);
                    }
                }
            }
            FormsService.SignIn(model.UserName, model.RememberMe);

            foreach (var role in Roles.GetAllRoles())
            {
                using (var group = GroupPrincipal.FindByIdentity(pc, role))
                {
                    if (group != null)
                    {
                        if (adUser.IsMemberOf(group))
                        {
                            if (!Roles.IsUserInRole(model.UserName, role))
                                Roles.AddUserToRole(model.UserName, role);
                        }
                        else
                        {
                            if (Roles.IsUserInRole(model.UserName, role))
                                Roles.RemoveUserFromRole(model.UserName, role);
                        }
                    }
                }
            }
        }
    }
}
var user=model.UserName.Split('\\');
使用(PrincipalContext pc=new PrincipalContext(ContextType.Domain,用户[0]))
{
if(pc.ValidateCredentials(用户[1],型号.密码,上下文选项.协商))
{
使用(var adUser=UserPrincipal.FindByIdentity(pc,IdentityType.SamAccountName,user[1]))
{
if(!MembershipService.ValidateUser(model.UserName,model.Password))
{
使用(var userDb=new UsersDbContext())
{
如果(userDb.aspnet_Users.Count(u=>u.UserName.ToLower().Contains(model.UserName))No

您不能将PrincipalContext与WAAD一起使用。必须在此处明确说明您目前(2014年1月)无法对WAAD进行直接用户身份验证。您需要重写应用程序的某些部分以使其兼容:

  • 身份验证仅在WAAD端进行,您的代码无法进行用户+密码验证。这也发生在WAAD提供的登录页面上。您对该页面的外观控制有限,可以通过自定义该页面
  • 您可以使用
  • 探索Graph API以了解您可能需要的其他操作(即要求用户的组成员资格、直接报告等)
  • 您必须从Windows身份验证切换到联合身份验证。根据您使用的VS版本,这可能很容易,也可能很难。对于VS 2012,有。而在2013年,身份验证只能在您创建项目时配置,以后不能更改。但您可以从其他项目复制配置更改ct结束。您需要在web.config文件中进行更改,以及在global.asax.Check中初始化的内容-尽管关于VS 2013 RC,但在RTM中的过程是相同的

您不能将PrincipalContext与WAAD一起使用。必须在此处明确说明您目前(2014年1月)无法对WAAD进行直接用户身份验证。您需要重写应用程序的某些部分以使其兼容:

  • 身份验证仅在WAAD端进行,您的代码无法进行用户+密码验证。这也发生在WAAD提供的登录页面上。您对该页面的外观控制有限,可以通过自定义该页面
  • 您可以使用
  • 探索Graph API以了解您可能需要的其他操作(即要求用户的组成员资格、直接报告等)
  • 您必须从Windows身份验证切换到联合身份验证。根据您使用的VS版本,这可能很容易,也可能很难。对于VS 2012,有。而在2013年,身份验证只能在您创建项目时配置,以后不能更改。但您可以从其他项目复制配置更改ct结束。您需要在web.config文件中进行更改,以及在global.asax.Check中初始化的内容-尽管关于VS 2013 RC,但在RTM中的过程是相同的

我认为您可能需要在自定义身份验证实现中使用WAAD Graph API。我认为您可能需要在自定义身份验证实现中使用WAAD Graph API。我通过使用azure AD搜索联合身份验证发现了以下内容:-我有权这样做吗?我可以这样做吗?不,这绝对是不正确的与您的项目相关。这是关于使用ADFS对Windows Azure服务总线进行身份验证。您唯一的选择是我描述的方式。嗯,好的-我想这是您提到的“联合身份验证”…您有这样的示例吗?但这不也使用“登录页”吗?我通过搜索azure AD的联合身份验证找到了以下内容:-我有权这样做吗?我可以这样做吗?不,这与您的项目完全无关。这是关于使用ADFS对Windows azure服务总线进行身份验证。您唯一的选择是我描述的方式。嗯,好的-我认为这是您提到的“联邦身份验证”…您有这样的例子吗?但这不也使用“登录页面”吗?