【发布时间】:2022-02-05 18:02:36
【问题描述】:
我有一个名为 Web-App-1 的 ASPNET Core 网站和一个名为 Web-Api-1 的 ASP NET Core Web API。
-
我想保护 Web-Api-1 中的某些功能,以便它只能由某些用户调用。
-
我还想在 Web-App-1 中了解当前用户是否可以调用安全功能,如果不能,我不会为他们提供这样做的机会。
我可以通过将 AppRole 添加到 AzureAd 中 api 的应用注册并检查该应用角色的 ClaimIdentity 来满足要求 1。
if (this.ControllerContext.HttpContext.User.HasClaim(
System.Security.Claims.ClaimsIdentity.DefaultRoleClaimType,
"SecuredApiFunctionality") == false)
{
return new UnauthorizedObjectResult("User does not have SecuredApiFunctionality role");
}
但是,当我在 Web-App-1 的上下文中查看该用户的声明时,我看不到“SecuredApiFunctionality”。我认为这是因为它是属于 Web-Api-1 的 AppRole,而我在 Web-App-1 中。
我可以在 Web-App-1 中定义第二个 AppRole 并为其设置权限,但这对我来说听起来像是重复。有没有一种方法可以只使用一个角色来保护 API 和 Web 应用?
【问题讨论】:
标签: asp.net asp.net-core azure-active-directory msal microsoft-identity-platform