gpt4 book ai didi

asp.net-mvc - 使用 Azure 中同步的 Active Directory 验证用户(包括组)?

转载 作者:行者123 更新时间:2023-12-03 04:52:04 26 4
gpt4 key购买 nike

我正在将一个应用程序移植到 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);
}
}
}
}
}
}
}

这在连接到我们的域服务器的网络服务器上运行良好。
现在,我设置了一个 Windows Azure Active Directory 并将其配置为与我们的本地 AD 同步,该 AD 也可以工作。

但我现在正在努力寻找一种将我的 PrincipalContext 连接到 WAAD 的方法。

这可能吗?如何实现?如果没有,有什么替代方案?

我只找到了使用单点登录的示例,该示例会重定向到我们不想使用的 MS 登录页面,因为我们有混合身份验证,并且根据输入的用户名,它会使用 ASP.NET 成员身份或者从 AD 中提取用户和组(并实际创建一个 ASP.NET 成员(member)用户,如上所示)。

最佳答案

没有。

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

  • 身份验证仅发生在 WAAD 端,您的代码无法执行用户+密码验证。这也会发生在 WAAD 提供的登录页面上。您对此页面的外观拥有有限的控制权,并且可以通过 Premium features of WAAD 对其进行自定义。 .
  • 您可以create usersreset user password使用WAAD Graph API .
  • 探索 Graph API 以了解您可能需要的其他操作(即询问用户的群组成员身份、直接下属等)
  • 您必须从 Windows 身份验证切换到联合身份验证。根据您使用的 VS 版本,这可能很容易也可能很困难。对于 VS 2012 有 Identity and Access Tool extension 。而在 2013 年,身份验证只能在创建项目时配置,之后无法更改。但您可以从其他项目复制配置更改。您需要更改 web.config 文件以及 global.asax 中初始化的内容。检查it here - 虽然关于 VS 2013 RC,但 RTM 中的过程是相同的。

关于asp.net-mvc - 使用 Azure 中同步的 Active Directory 验证用户(包括组)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21075881/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com