Aas*_*lli 10 django django-rest-framework reactjs azure-active-directory azure-ad-msal
我只是想知道如何在我的例子中验证后端 API 中的 azure 广告访问令牌,即 Django Rest 框架。
考虑一下我有一个单页应用程序或一个本机应用程序和一个完全独立的后端 API(django Rest 框架)。就我而言,如果我的单页应用程序/本机应用程序想要从后端 API 访问某些数据,并且为了访问 API,用户应该登录后端 API。
所以我的方法是利用 MSAL 库从 SPA/本机应用程序获取访问令牌,然后获取令牌后,将该令牌传递到后端 API,对其进行验证,从图形 api 获取用户信息。如果数据库中存在用户,则登录该用户并传递所需的信息。如果用户信息不存在,则创建用户、登录并从 API 传递信息。
所以我的问题是,当我将访问令牌传递到后端 api 时,如何验证用户/SPA/本机应用程序传递到后端 API 的令牌是否有效?
我们是否只需要使用 user/SPA/native 传递的 accessToken 对图形 API 端点进行 API 调用,如果能够使用 accessToken 获取用户数据,则令牌有效,或者如果失败,则 accessToken 无效。
这是验证令牌的一般方法还是有更好的方法?请帮忙
美好的一天,先生,我想在这里分享我的一些想法,我知道这不是一个解决方案,但评论太长了。
我之前创建了一个SPA,使用msal.js让用户登录并生成访问令牌来调用图api,这里你必须知道,当你生成访问令牌时,你需要设置目标api的范围,例如,你想要调用“graph.microsoft.com/v1.0/me”,您需要一个范围为“User.Read、User.ReadWrite”的令牌,并且还需要向 azure 应用程序添加委派 api 权限。
所以作为你自己的后端程序的自定义api。我创建了一个 springboot api,如果我调用“localhost:8080/hello”,它将返回“hello world”,如果我希望我的 api 受 azure 广告保护,我需要添加一个过滤器来验证所有请求(如果具有有效的访问令牌) 。所以我需要找到一个jwt库来解码请求头中的令牌并检查它是否有令牌,令牌是否已过期以及令牌是否具有正确的范围。那么在这里,哪个范围是正确的范围呢?这是由您在 azure ad 中公开的api 决定的。您可以设置名为“AA_Custom_Impression”的范围,然后可以将此委托 api 权限添加到客户端 Azure 广告应用程序,然后该应用程序生成范围为“AA_Custom_Impression”的访问令牌。在调用请求中附加 Bearer token 后,将被后端代码过滤。
我不了解Python,所以我只能推荐你这个示例,你可以尝试一下,它是由微软提供的。
| 归档时间: |
|
| 查看次数: |
4397 次 |
| 最近记录: |