這是我第一次在這裏發帖,所以請對我溫柔! :)從ACS退回AD組員身份
我試圖開發一個應用程序使用Azure ACS(即Office 365)作爲身份驗證系統。事情的身份驗證方面似乎很好,我被重定向到Office 365登錄頁面,並可以成功登錄。我的代碼然後使用圖形API獲取有關該用戶的其他信息。
我在掙扎的是獲取登錄人員所屬的AD組列表。當我要求獲取組列表時,只返回Office 365安全角色。
這裏是我做了什麼(我希望我已經包括了相關的一切)
從內Azure的;
- 極速到Active Directory
- 選擇我的域名(其中DirSyncs從的預置型AD)
- 創建一個新的應用程序
- 允許讀取目錄數據,並啓用登錄和讀取用戶的個人資料
- 創建一個新的關鍵
從我的測試應用程序中;
- 的創
- 使用的身份識別和訪問設置指定一個新的Web應用程序(標準網頁形式)「用戶身份的業務提供」
- 添加一個clientId和密碼發送到app.settings文件
- 添加在Windows Azure Active Directory的圖形輔助項目
這裏是我的相關代碼
IPrincipal myPrincipal = this.User;
//get the tenantName
string tenantName = ClaimsPrincipal.Current.FindFirst("http://schemas.microsoft.com/identity/claims/tenantid").Value;
// retrieve the clientId and password values from the Web.config file
string clientId = Properties.Settings.Default.ClientID;
string password = Properties.Settings.Default.Password;
// get a token using the helper
AADJWTToken token = DirectoryDataServiceAuthorizationHelper.GetAuthorizationToken(tenantName, clientId, password);
// initialize a graphService instance using the token acquired from previous step
DirectoryDataService graphService = new DirectoryDataService(tenantName, token);
User myUser = graphService.users.Where(it => (it.userPrincipalName == myPrincipal.Identity.Name)).SingleOrDefault();
graphService.LoadProperty(myUser, "memberOf");
List<Role> currentRoles = myUser.memberOf.OfType<Role>().ToList();
當我運行我的代碼時,currentRoles只包含「公司管理員」而不是我所屬的其他組。
我讀過很多關於如何通過命名空間添加規則的文章,但似乎與使用Windows ACS有關。
我可能缺少一個真正的基本步驟,並且將是朝着正確的方向:)輕推感激不盡
感謝, 達倫
謝謝肖恩。我將「角色」的最後一行代碼更改爲「組」,它的作用很好。我想在玩了幾個小時的代碼之後,我的大腦將角色和組合在一起(這從來不是一個好主意)。 – Darren