如何使用带 angular + flask 的 azure AD 使用 Microsoft oauth2

How to use microsoft oauth2 using azure AD with angular + flask

我正在开发一个 flask + angular 网络应用程序,我想使用 Microsoft oauth2 通过 rest API 获取一些数据。

所以我在 Angular 中有一个“登录 Microsoft”按钮,但我需要从后端 (Flask) 调用 API,那么对于这种情况最好的解决方案是什么?我应该在 azure AD 中将前端还是后端注册为客户端?

编辑:

我会在这里解释更多:

所以问题是:

我实际上可以做另一个解决方案,即:注册我的 angular 应用程序 --> 从 angular 请求 APIs --> 在 angular 中做一些处理并发送结果到后端 --> 后端将在不使用 access_token 的情况下完成剩余的处理阶段,我可以这样做吗?或者有更好的解决方案

我认为您可以注册后端应用程序并将 redirect_uri 配置到前端,但我不确定

客户端 ID 听起来很混乱。客户端 ID 只是一个通用 ID,用于识别每个应用程序注册,而不是像客户端“前端”应用程序那样识别应用程序类型。

azure ad中应该还有向导

因此您需要为 前端“angular spa”和后端api 进行应用注册。

这是在 azure 广告中注册 api 的示例。 https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-configure-app-expose-web-apis

那么第一个问题是您尝试使用哪种类型的流程?

另外我建议使用 MSAL 库

这里有一个link它支持的流程

https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-authentication-flows

这里是一个如何使用 azure ad msal https://www.c-sharpcorner.com/article/build-a-secure-angular-app-using-msal-and-azure-active-directory/

设置 angular 的示例

您需要注册您的客户端(angular 应用程序)以及 api。

您还需要研究使用 msal 保护网络 api。

您还需要设置范围等内容

总而言之,当您导航到您的 angular 应用程序时,您将登录到 Microsoft,这将为您提供一个不记名令牌,然后该令牌将在您的请求中的 header 中发送您的 api 然后 api 将验证该令牌并拒绝或发回响应。

看这里:https://realpython.com/blog/python/token-based-authentication-with-flask/ 也检查这个 http://flask-jwt-extended.readthedocs.io/en/latest/