我有 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
- 使用 implicit 从 Azure AD 获取 ID 和访问 token 流动。目前我没有用户的组信息
- 创建 Web API secured由 Azure AD 提供。它还可以识别从步骤 1 获取的访问 token
- 将访问 token 传递给 API 并检索群组信息以确定用户是否可以进入 SPA
- 已实现 claims transformation并将其缓存在 Web API 中
- 已创建 policy在 Web API 中确保仅允许特定组的成员访问 API 端点
- Web API 设置为使用客户端凭据授予流程与 Graph API 进行通信
关于基于 Azure AD 组的登录和 MS 图形 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50245054/