код для использования групп O365 в основном приложении .net - PullRequest
0 голосов
/ 11 февраля 2019

Я работаю над основным приложением .net, и мне нужно интегрировать группы безопасности O365 для назначения ролей, у кого-то есть пример кода для обмена, это будет очень полезно.

Я уже использовал регистрацию приложения Azure ADконцепция для аутентификации O365 и работает идеально.Базовое приложение .Net размещается на IIS, при доступе к нему путем ввода URL-адреса в браузере оно перенаправляет пользователей на login.microsoftonline.com, после проверки подлинности пользователи затем видят часть панели инструментов базового приложения .net.

Не такВы уверены, что группы O365 могут использоваться в основном приложении .net для управления разрешениями, поэтому ищите некоторый образец фрагмента, заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Группы безопасности 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.

0 голосов
/ 21 февраля 2019

Вы можете запросить Graph API как ваше приложение или выдать себя за пользователя, чтобы узнать, в какие группы входит пользователь, а затем использовать этот Id для фильтрации представлений или того, что вам нужно сделать.

вы можете использовать"List memberOf"

https://docs.microsoft.com/en-us/graph/api/user-list-memberof?view=graph-rest-1.0

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...