我有一个使用基于声明的授权的 WCF 服务。

我想做的是将操作归因于 ClaimsPrincipalPermissionAttribute 并且在我的自定义中仅触发一次授权检查 ClaimsAuthorizationManager. 。但是我发现此授权检查被触发两次;一次用于 URL,第二次用于操作本身。

我找不到关于这个主题的太多信息,但我发现的信息表明这是设计使然。我是否可以覆盖这个行为,不对URL进行任何授权,只根据操作进行授权?

我对基于 URL 进行授权没有兴趣,并且真的宁愿避免为每个 URL 添加声明,因为我可能有很多这样的声明,并且它们将来可能会发生变化。

我读过几篇文章,也看过多米尼克·拜尔(Dominick Baier)关于这个主题的视频,虽然我从这些文章中学到了很多东西,但我仍然找不到这个问题的答案。这是否根本不可能,我只需要根据 URL 进行授权?

有帮助吗?

解决方案

您无法更改此行为 - 我所做的是编写一个自定义声明权限属性,该属性确实会发出不同的声明类型。这样我就可以区分每个请求的调用和显式属性。

https://github.com/thinktecture/Thinktecture.IdentityModel.45/tree/master/IdentityModel/Thinktecture.IdentityModel/Authorization

或 Thinktecture.IdentityModel nuget 包。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top