我正在开发.net核心应用程序,必须集成O365安全组以进行角色分配,有人可以共享示例代码,这将非常有帮助。
我已经使用Azure AD应用程序注册概念进行O365身份验证,并且它可以完美运行。 .net核心应用程序托管在IIS上,通过在浏览器中键入url进行访问时,它将用户重定向到login.microsoftonline.com,一旦通过身份验证,用户便会看到.net核心应用程序的仪表板部分。
不确定如何在.net核心应用程序中将O365组用于权限管理,因此需要一些示例片段,在此先感谢。
答案 0 :(得分:2)
您既可以在应用程序中查询图形api,也可以模拟用户,以读取用户所在的组,然后使用这些ID过滤视图或您需要执行的操作。
您可以使用“列表memberOf”
https://docs.microsoft.com/en-us/graph/api/user-list-memberof?view=graph-rest-1.0
希望有帮助。
答案 1 :(得分:1)
Office365 security groups可以通过verifying if a user is a member of a security group用于应用程序中的权限管理。您可以将Microsoft Graph API用作MohitVerma suggested。
首先,在应用程序中为角色映射定义组(配置文件似乎是个不错的选择)。每个组都有一个唯一的ID,您可以使用例如Office365 or Microsoft Graph并映射到config.json
文件中的自定义角色:
{
"AppRoles": [
"Admin": "d17a5f86-57f4-48f8-87a0-79761dc8e706",
"Manager": "9a6a616e-5637-4306-b1fe-bceeaa750873"
]
}
然后,在成功登录应用程序后,call the Graph API获取用户所属的所有组。您将获得一个组列表,每个组包含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 for .NET发出请求并从响应中创建组对象:
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";
}
}
}
请确保您的应用grant permissions才能访问Microsoft Graph。