【问题标题】:ClaimsPrincipalPermission.CheckAccess returns 403 for POST methodsClaimsPrincipalPermission.CheckAccess 为 POST 方法返回 403
【发布时间】:2023-01-31 14:45:05
【问题描述】:
我们有几个通过 Web 应用程序公开的 POST 和 GET API。在他们每个人中,用户访问都由检查
ClaimsPrincipalPermission.CheckAccess。对于 GET 方法,一切正常,但对于 POST 和一些安装 403(禁止)在检查期间返回。应用程序始终托管在 Azure App Service 上,因此它似乎与服务设置本身有关。客户不知道设置中有任何“特殊”更改,但谁知道 - 在其他站点上完全相同的安装过程完全没有问题。此外,禁用检查的版本工作得很好。那么,实际阻止 CheckAccess 的设置可能是什么?
【问题讨论】:
标签:
c#
api
azure-web-app-service
【解决方案1】:
从 POST 请求的 ClaimsPrincipalPermission.CheckAccess 方法返回 403 Forbidden 错误的原因有很多。
-
这是由于角色定义不正确,请检查 ClaimsPrincipalPermission.CheckAccess 中使用的角色是否正确定义,以及是否为用户分配了正确的角色。
-
并且由于用户权限不足,请检查用户是否具有访问API所需的权限。这可以通过查看应用服务身份验证/授权设置在 Azure 应用服务中进行检查。
- 网络安全组规则,检查网络安全组 (NSG) 规则是否阻止请求。检查 Azure 应用服务的 NSG 规则,确保允许来自源 IP 的传入流量。
创建应用程序安全组和网络安全组。
-
自定义授权中间件,如果使用自定义授权中间件,它可能会干扰 ClaimsPrincipalPermission.CheckAccess 方法。检查自定义中间件代码以确保它没有阻止请求。
-
Azure 应用服务配置,检查 Azure 应用服务配置是否影响请求。并检查应用服务配置设置以确保一切设置正确。
参考资料取自:
Authentication
NSG Rules