我试图利用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用户是否可以访问特定的应用程序,然后我就能够更新分配。我也可能还需要删除该作业。
答案 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
下获得服务主体。这是响应的示例:
id
是角色ID,在您的方案中,您可以在principalId
与特定用户的对象ID匹配时检查记录是否存在,principalType
是{{1} }。