【发布时间】:2021-04-26 20:14:08
【问题描述】:
尽管阅读了 Microsoft.com 上的多篇文章和教程,但我在理解如何使用 Azure AD 中的应用注册/OAuth2 定义 API 之间的权限时遇到了问题。例如,我在 Azure AD 中设置了 2 个简单的应用程序注册,一个用于后端 API(比如说客户端 ID A),另一个用于前端或另一个 API(客户端 ID B)。然后,我设置了一个带有默认(模板)身份验证(选项 = 租户、客户端 ID 等)和默认天气预报端点的基本 .NET Core API。
services.AddAuthentication(AzureADDefaults.BearerAuthenticationScheme)
.AddAzureADBearer(options => Configuration.Bind("AzureAd", options));
services.AddControllers();
现在,我可以从https://login.microsoftonline.com/<tenant>/oauth2/token 获得一个令牌,客户端 ID = B 和资源 = 客户端 ID A,当我发送这个令牌时(使用 'aud = A')到它接受它的 API。
为什么我没有在App Registrations A和B之间建立任何关系,却成功生成了token? Azure AD 中的 API 权限选项卡在两个注册中都是空的 - 我认为 AAD 会拒绝说明应用 B 无权访问应用 A 的请求。还是我完全负责通过我的应用上的代码验证受众声明?
【问题讨论】:
-
我写了一篇关于这个话题的文章:joonasw.net/view/…。这是后续行动:joonasw.net/view/…。 TL;DR,您需要定义和检查权限。
-
谢谢你的这些。我一直认为 AD 在发布令牌之前会检查权限。我很惊讶没有一个教程(microsoft.com 的)提到权限未经 AAD 验证,这完全取决于您。
-
我会为此写一个答案:)
标签: .net-core oauth-2.0 azure-active-directory