2017-03-03 22 views
0

我想获取我的天蓝色网站上下文以获取用户详细信息。当我尝试在servername上获取上下文时,我的代码在此时失败,这是第二个参数。在这种情况下,我可以在哪里从azure拉取服务器名称。我从here发现了一些信息。天青活动目录用户原则上下文服务器名称

using (PrincipalContext context = new PrincipalContext(ContextType.Domain, "mysitename.azurewebsites.net")) 

完整的代码示例

static GroupPrincipal[] GetUserAuthorisationGroups(string userPrincipalName) 
     { 
      using (PrincipalContext context = new PrincipalContext(ContextType.Domain, "mysitename.azurewebsites.net")) 
      using (UserPrincipal user = UserPrincipal.FindByIdentity(context, IdentityType.UserPrincipalName, userPrincipalName)) 
      { 
       return user.GetAuthorizationGroups().OfType<GroupPrincipal>().ToArray(); 
      } 
     } 
+0

您是否正在遵循教程或代码示例?你可以在你的问题中分享这些信息吗? –

回答

2

我会是什么看来你要完成一般和更具体的回答。

First-Azure AD和Windows Server AD不是一回事。它们都旨在解决相同的问题,但是要采用完全不同的方式(正如预期的那样 - 像云这样的不可信任的非域环境具有显着不同的基础设施)。

稍微深入了解一下,Windows Server AD可以同步到Azure AD,但只能访问对象信息(如用户,组等),以便Azure AD中提供信息。但协议级别的东西,比如Kerberos,不能通过Azure AD获得(当然,除非通过诸如Azure AD Domain Services之类的东西,但对于传统方案而言更是如此,并且不适用于您在其中托管Web应用程序的Azure应用服务)。

无论如何,Azure AD依靠OAuth和更现代的协议,可以在Web上工作而不需要可信任的服务器,而不是拥有可以使用Kerberos与Windows Server AD交谈的受信任域加入服务器。无论托管服务器如何,受OAuth保护的Web应用程序或移动应用程序都可以工作。您可以在这里阅读有关AAD的更多信息:https://msdn.microsoft.com/en-us/library/azure/jj573650.aspx

看起来您正试图获得用户组的授权决定,并且您正在使用Azure App Service。你需要做两件事情:

  • 验证到Azure的AD和
  • 获得来自Azure的广告中加入额外的授权信息

认证是相当简单的。由于您使用的是C#,因此大部分都可以通过ADAL库完成,ADAL库为您抽取了大部分复杂性。你可以找到Azure的GitHub的样品这里的样本:

净这些步骤是 - 申请注册加入Azure的AD - 这会给你一个客户端ID(也可使用一个秘密,你” Azure AD - 将ADAL NuGet包添加到您的应用程序 - 让ADAL将用户重定向到Azure AD以登录 - 登录后使用令牌并将用户登录到您的应用程序

您可以在此处找到完整的示例:https://github.com/Azure-Samples/active-directory-dotnet-webapp-openidconnect

此示例将帮助您完成应用程序注册并配置ADAL以将用户登录到您的应用程序。这至少会让你认证,所以你会知道你的用户是谁。

您希望做的下一件事是 - 包括Azure AD应用程序角色,它将包含在声明集中。您可以使用这些来作出授权决定(如[Authorize(Role=SomeRoleName)]类似于使用本地AD组的方式),或者查询Azure AD或Microsoft Graph API以获取其他用户信息,例如组成员身份或其他用户属性。

所有的用户信息都存储在图表中,因此您需要通过PrincipalSearcher查询用户信息而不是本地AD。

下面是一个使用天青AD应用程序角色的样品:https://github.com/Azure-Samples/active-directory-dotnet-webapp-roleclaims

,另一个使用组权利要求(例如,包括该组GUID在返回的权利要求集):https://github.com/Azure-Samples/active-directory-dotnet-webapp-groupclaims

最后,这里是另一个示例查询AAD图解决组GUIDs组名称,有用于迁移现有的Windows AD代码,通过组检查授权:https://github.com/jpda/azure-ad-netcore-sample

希望有所帮助。

相关问题