我有两个Azure广告应用:
1)守护我的webapi的Admin / BackendApp
2)消费者APP,它将消耗我的webapi
当我尝试使用通过以下URL创建的令牌访问我的Web API时,传递所需的ClientID,ClientSecret,Resource和grant_type = client_credentials
https://login.microsoftonline.com/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/oauth2/token
我从url上方获取访问令牌,并将该令牌作为Authorization标头传递给我的webapi,我获得了成功的响应,而无需授予对admin / backendapp的任何访问权限。
答案 0 :(得分:3)
您需要检查令牌中的有效范围/角色!
在Azure AD中定义API的委托/应用权限,并在您的API中实施它们。最好对令牌至少包含一个有效许可进行全局检查。
任何租户中的应用程序都可以获取您API的令牌,只要他们知道您的租户ID和客户端ID。 如果不检查权限,则您的API容易受到攻击!
我有一篇文章介绍如何在ASP.NET Core中定义和实施范围:https://joonasw.net/view/azure-ad-authentication-aspnet-core-api-part-1
答案 1 :(得分:1)
根据您的查询,将创建JWT令牌来调用API,该API已经具有足够的权限来调用资源。这看起来像是正常情况