基于 Azure AD 组的登录和 MS 图形 API

标签 azure azure-active-directory microsoft-graph-api asp.net-core-2.0 asp.net-core-webapi

我有 Angular 4 SPA、Web API(.net core 2.0) 和 Azure AD

我的要求是:

1.将 SPA 身份验证(登录)限制为仅限某些 Azure AD 组。例如。我有两个组“销售”和“营销”,如果用户是这两个组中任一组的成员,则只有用户应该能够登录

2.用户登录后,可以使用 Microsoft Graph API 对其他用户执行某些管理操作

我的方法

  • 为了实现要求 1,我正在考虑实现可与 Azure AD 通信的身份服务器。然后,SPA 将使用身份服务器作为 IP,使用隐式流进行身份验证
  • 为了实现要求 #2,我认为我需要使用 Oauth 2.0 授权代码流或 OAuth 2.0 客户端凭据授予,并且我的 Web api(.net core 2.0) 将充当 secret 客户端,该客户端将拥有自己的访问 token 使用 MS graph API 执行管理操作
  • 因此,一旦用户登录,流程将是 SPA(具有在 Web api 中授权的访问 token )=> Web API(具有另一个具有高权限的访问 token )=> MS graph API => Azure AD

问题

  • 我的实现路径正确吗?
  • 如果没有,您能指导我正确的方向吗?

最佳答案

这就是我解决的方法

我使用了 Azure AD V2.0 端点、Angular 和 .net core 2.0

  1. 使用 implicit 从 Azure AD 获取 ID 和访问 token 流动。目前我没有用户的组信息
  2. 创建 Web API secured由 Azure AD 提供。它还可以识别从步骤 1 获取的访问 token
  3. 将访问 token 传递给 API 并检索群组信息以确定用户是否可以进入 SPA
  4. 已实现 claims transformation并将其缓存在 Web API 中
  5. 已创建 policy在 Web API 中确保仅允许特定组的成员访问 API 端点
  6. Web API 设置为使用客户端凭据授予流程与 Graph API 进行通信

关于基于 Azure AD 组的登录和 MS 图形 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50245054/

相关文章:

angular - 如何在 Linux 上使用 Docker 和 Azure Web App 部署 Angular 4 应用程序

c# - 在 ADB2C 中忘记密码 - (AADB2C90118),如何运行特定的用户流程?

reactjs - msal-react 访问 token 与 id token 不同的过期时间

windows - 使用联合用户登录 Windows 设备

azure - CQRS 和事件溯源指南

azure - Azure-AD B2C 可以使用手机号码作为用户名吗?

azure - 如何在Microsoft graph api中识别事件属于哪个日历?

azure - 相同的 Azure 应用程序无法在不同的租户中运行

sharepoint - 使用 "sourcedoc"ID 从 Microsoft Graph API 下载 SharePoint 文件

azure - 可以使用Azure SDK for python来查询azure服务运行状况吗?