2017-03-03 24 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

希望有所幫助。

相關問題