如何在Graph Api中使用appRoleAssignment

时间:2017-07-20 00:20:55

标签: microsoft-graph azure-ad-graph-api

我试图利用beta API将azure用户分配给应用程序。

我查看了文档,并尝试使用<html lang="en"> <head> <meta name="google-signin-scope" content="profile email"> <meta name="google-signin-client_id" content="YOUR_CLIENT_ID.apps.googleusercontent.com"> <script src="https://apis.google.com/js/platform.js" async defer></script> </head> <body> <div class="g-signin2" data-onsuccess="onSignIn" data-theme="dark"></div> <a href="#" onclick="signOut();">Sign out</a> <script> function onSignIn(googleUser) { // Useful data for your client-side scripts: var profile = googleUser.getBasicProfile(); console.log("ID: " + profile.getId()); // Don't send this directly to your server! console.log('Full Name: ' + profile.getName()); console.log('Given Name: ' + profile.getGivenName()); console.log('Family Name: ' + profile.getFamilyName()); console.log("Image URL: " + profile.getImageUrl()); console.log("Email: " + profile.getEmail()); // The ID token you need to pass to your backend: var id_token = googleUser.getAuthResponse().id_token; console.log("ID Token: " + id_token); }; </script> <script> function signOut() { var auth2 = gapi.auth2.getAuthInstance(); auth2.signOut().then(function () { console.log('User signed out.'); }); } </script> </body> </html> HttpClient在C#控制台应用中进行各种尝试,但无法成功。然后我去了Microsoft图形资源管理器https://developer.microsoft.com/en-us/graph/graph-explorer。我无法让它发挥作用。

我查看了文档 https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/api/approleassignment_get

该文档的HTTP请求的实际文档与示例不匹配。 Graph Explorer似乎暗示示例是正确的,但通过各种尝试,我只能得到

的响应
WebClient

我的基本网址是 https://graph.microsoft.com/beta/appRoleAssignments/

示例说{ "error": { "code": "Request_UnsupportedQuery", "message": "Direct queries to this resource type are not supported.", ... } } ,但我不知道要放什么。我输入了几个guid,用户ID,对象ID,资源id,没有工作。

它并没有说任何访问被拒绝的消息所以我认为它与Scopes无关(尽管文档对此也有点空洞。)

理想情况下,我能够查看给定的访客Azure用户是否可以访问特定的应用程序,然后我就能够更新分配。我也可能还需要删除该作业。

2 个答案:

答案 0 :(得分:4)

看起来Microsoft Graph API的beta端点目前不允许您列出AppRoleAssignments。 [编辑(2018-10-11):Microsoft Graph beta端点现在支持列出的能力AppRoleAssignments,尽管您仍然应该将Azure AD Graph用于任何生产应用程序,直到它达到v1.0。]幸运的是,Azure AD Graph API 为此工作(此外,它不是测试版)终点,所以它更可能是稳定的。)

列出分配用户的所有应用程序角色(使用Azure AD Graph和Microsoft Graph(beta)):

   https://graph.windows.net/{tenant-id}/users/{id}/appRoleAssignments?api-version=1.6
   https://graph.microsoft.com/beta/users/{id}/appRoleAssignments

列出分配了组的所有应用角色:

   https://graph.windows.net/{tenant-id}/groups/{id}/appRoleAssignments?api-version=1.6
   https://graph.microsoft.com/beta/groups/{id}/appRoleAssignments

执行相反操作,并列出分配给应用的所有用户或组:

   https://graph.windows.net/{tenant-id}/servicePrincipals/{id}/appRoleAssignedTo?api-version=1.6
   https://graph.microsoft.com/beta/servicePrincipals/{id}/appRoleAssignedTo

答案 1 :(得分:2)

在新的Azure门户中,在"Enterprise applications" > (your app) > "Users and groups"下,您将看到分配给该应用程序的用户列表,以及分配给它们的应用程序角色。经过测试,您可以使用Microsoft Graph API请求执行相同的操作:

https://graph.microsoft.com/beta/servicePrincipals/d0790296-0a14-4ab1-8f6c-4e4d3eb03036/appRoleAssignments

您可以在"Enterprise applications" > (your app) >Properties>Object ID下获得服务主体。这是响应的示例: enter image description here

id是角色ID,在您的方案中,您可以在principalId与特定用户的对象ID匹配时检查记录是否存在,principalType是{{1} }。