Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net core 在.net核心应用程序中使用O365组的代码_.net Core_Office365 - Fatal编程技术网

.net core 在.net核心应用程序中使用O365组的代码

.net core 在.net核心应用程序中使用O365组的代码,.net-core,office365,.net Core,Office365,我正在开发一个.net核心应用程序,必须为角色分配集成O365安全组,是否有人可以共享示例代码,这将非常有帮助 我已经在O365身份验证中使用了Azure AD应用程序注册概念,它工作得非常好。Net core应用程序托管在IIS上,当通过在浏览器中键入url进行访问时,它会将用户重定向到login.microsoftonline.com,经过身份验证后,用户将看到.Net core应用程序的仪表板部分 不太确定如何在.net core应用程序中使用O365组进行权限管理,因此需要查找一些示例片

我正在开发一个.net核心应用程序,必须为角色分配集成O365安全组,是否有人可以共享示例代码,这将非常有帮助

我已经在O365身份验证中使用了Azure AD应用程序注册概念,它工作得非常好。Net core应用程序托管在IIS上,当通过在浏览器中键入url进行访问时,它会将用户重定向到login.microsoftonline.com,经过身份验证后,用户将看到.Net core应用程序的仪表板部分


不太确定如何在.net core应用程序中使用O365组进行权限管理,因此需要查找一些示例片段,提前感谢。

您可以作为应用程序或模拟用户查询graph api,以读取用户所在的组,然后使用这些Id筛选视图或执行任何需要执行的操作

您可以使用成员列表

希望有帮助。

可用于应用程序中的权限管理。您可以通过使用as来实现这一点

首先,在应用程序配置文件中定义组到角色的映射似乎是一个很好的地方。每个组都有一个唯一的id,您可以使用该id获取,并映射到config.json文件中的自定义角色:

然后,在成功登录应用程序后,获取用户所属的所有组。您将获得一个组列表,每个组都包含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
        }
    ]
}
您可以使用来发出请求并创建组对象以形成响应:

var userGroups = await graphServiceClient.Me.Groups.Request().GetAsync();
最后,用您的自定义角色验证每个组的id,例如:

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设置了相应的选项

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";
        }
    }
}