我正在尝试使用Azure Spring Boot库保护Spring Boot中的终结点。我正在追踪https://github.com/microsoft/azure-spring-boot/tree/master/azure-spring-boot-samples/azure-active-directory-spring-boot-sample
中的示例从React中编写的前端应用程序进行API调用时,如果应该使用Id_token或Access_token,我无法得到明确的答案。
https://docs.microsoft.com/en-us/azure/active-directory/develop/access-tokens 我认为上面链接中的文档指出,我应该使用Access_token来保护端点,但是在那azure-spring-boot-samples中,他们使用了id_token来进行API调用。
我尝试使用相同的代码并测试API调用。如果在标头中使用id_token,则API调用成功。如果我在标头中传递access_token,则签名检查失败。
答案 0 :(得分:0)
在理解了大局之后,我想出了这一点。前端或后端的所有应用程序很可能应使用不同的应用程序ID。在Azure门户上,我将定义哪个应用有权调用哪个API。然后,当我获得访问令牌时,必须指定要访问的应用程序。这在Microsoft的MSAL文档中列出。 https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-acquire-cache-tokens
答案 1 :(得分:0)
此外,只有access_token允许您声明令牌中基于角色的访问控制之类的声明。 ID令牌的寿命通常较短,并且信息较少。通常,最好使用access_token。