应用程序-
1..Net 6 Web API
- Angular前端
- SQL DB
1..Net 6 Windows服务
我需要实现以下-授权代码流,其中angular app获取auth代码并将其发送到.net 6 web API,后者在内部通过auth代码获取访问令牌。然后.net 6 windows服务在内部使用该令牌来调用graph API,如果令牌过期,则在没有用户交互的情况下刷新令牌。
应用程序用户-用户可以是多租户
通过我目前的研究,微软文档展示了如何使用Web应用程序或Angular完成认证代码流,我不希望在前端完成此操作,我对如何实现上述场景感到困惑,如果有人能指导我一条路径将对我有很大帮助,谢谢。
1条答案
按热度按时间k4emjkb11#
在我看来,Angular客户端app + .net核心web API,这种场景,我们应该把认证和授权部分放到angular项目中,这样用户就可以登录并生成访问令牌来调用API。
在API内部,如果我们需要调用MS graph API,我们可以使用代表流来生成访问令牌。在API项目中使用代表流,我们只需要添加认证方案并注入图SDK或令牌获取服务。这个流程,也许你可以看看这个代码片段。
顺便说一下,当我们使用授权代码流登录时,如果我们没有在Azure AD API权限刀片中给予给予管理员同意,则在输入密码和用户名后,它应该要求我们给予给予同意,对于客户端凭据流,需要给予给予管理员同意。如果我们在多租户场景中使用客户端凭证流,恐怕我们应该提前通过管理员同意步骤。
客户端凭证流程代码示例,这是基于
Microsoft.Graph v4.x
包的,使用v5.x应该有一些区别: