Группы безопасности Office365 можно использовать для управления разрешениями в вашем приложении, проверяя , является ли пользователь членом группы безопасности .Вы можете добиться этого, используя Microsoft Graph API , как и МохитВерма предложила .
Сначала определите группы для сопоставления ролей в вашем приложении (файл конфигурации кажется хорошим местомдля этого).Каждая группа имеет уникальный идентификатор, который можно получить, например, Office365 или Microsoft Graph и сопоставить с пользовательской ролью в файле config.json
:
{
"AppRoles": [
"Admin": "d17a5f86-57f4-48f8-87a0-79761dc8e706",
"Manager": "9a6a616e-5637-4306-b1fe-bceeaa750873"
]
}
Затем, после успешного входа в системуВ приложении вызовите API Graph , чтобы получить все группы, к которым принадлежит пользователь.Вы получите список групп, каждая из которых содержит id
свойство:
GET https://graph.microsoft.com/v1.0/me/memberOf
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#directoryObjects",
"value": [
{
"@odata.type": "#microsoft.graph.directoryRole",
"id": "43a63cc2-582b-4d81-a79d-1591f91d5558",
"displayName": "Company Administrator",
"roleTemplateId": "62e90394-69f5-4237-9190-012177145e10"
},
{
"@odata.type": "#microsoft.graph.group",
"id": "d17a5f86-57f4-48f8-87a0-79761dc8e706",
"createdDateTime": "2017-07-31T17:36:25Z",
"displayName": "Admins group",
"securityEnabled": true
}
]
}
. Вы можете использовать MS Graph SDK для .NET , чтобы сделать запрос и создать форму объектов группы.ответ:
var userGroups = await graphServiceClient.Me.Groups.Request().GetAsync();
Наконец, проверьте идентификатор каждой группы с вашими пользовательскими ролями, например:
public string GetRole(IEnumerable<Group> userGroups, IConfiguration config)
{
foreach (var group in userGroups)
{
switch (group.id)
{
case config.GetSection("AppRoles:0"):
return "Admin";
case config.GetSection("AppRoles:1"):
return "Manager";
default:
return "Unknown";
}
}
}
Убедитесь, что предоставьте разрешения для вашего приложениядля доступа к Microsoft Graph.