如何使用带 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 从后端调用 API 的应用程序 (Flask)
- 我的应用程序的用户必须授予我一些权限才能访问他们的 Power BI 帐户中的数据。
- 在我的 Flask 应用程序中,我需要获取 Microsoft power BI 的访问令牌才能使用一些其他 API,例如:获取用户的报告或仪表板
- 然后我必须处理从 power bi rest API 收到的数据,并将响应发送到前端应用程序 (Angular)。
所以问题是:
- 如果我注册后端应用程序,我将无法管理会话,因为我的后端是无状态的。
- 如果我注册前端应用程序,我有两种情况:
- 案例 1:从前端调用 power bi rest API 这对我来说不是一个好案例,因为我想处理后端接收到的数据。
- 案例 2:通过 post 请求向后端发送令牌,我认为这根本不安全。
我实际上可以做另一个解决方案,即:注册我的 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/
我正在开发一个 flask + angular 网络应用程序,我想使用 Microsoft oauth2 通过 rest API 获取一些数据。
所以我在 Angular 中有一个“登录 Microsoft”按钮,但我需要从后端 (Flask) 调用 API,那么对于这种情况最好的解决方案是什么?我应该在 azure AD 中将前端还是后端注册为客户端?
编辑:
我会在这里解释更多:
- 所以我有一个 angular 从后端调用 API 的应用程序 (Flask)
- 我的应用程序的用户必须授予我一些权限才能访问他们的 Power BI 帐户中的数据。
- 在我的 Flask 应用程序中,我需要获取 Microsoft power BI 的访问令牌才能使用一些其他 API,例如:获取用户的报告或仪表板
- 然后我必须处理从 power bi rest API 收到的数据,并将响应发送到前端应用程序 (Angular)。
所以问题是:
- 如果我注册后端应用程序,我将无法管理会话,因为我的后端是无状态的。
- 如果我注册前端应用程序,我有两种情况: - 案例 1:从前端调用 power bi rest API 这对我来说不是一个好案例,因为我想处理后端接收到的数据。 - 案例 2:通过 post 请求向后端发送令牌,我认为这根本不安全。
我实际上可以做另一个解决方案,即:注册我的 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/