0

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

我想要做的是用 a 来赋予一个操作,ClaimsPrincipalPermissionAttribute并且在我的 custom 中只有一次授权检查触发器ClaimsAuthorizationManager。但是我发现这个授权检查被触发了两次;一次用于 URL,然后第二次用于操作本身。

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

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

我已经阅读了几篇文章,并看过 Dominick Baier 关于这个主题的视频,虽然我从中学到了很多东西,但我仍然找不到答案。这根本不可能,我只需要处理必须基于 URL 进行授权的问题吗?

4

1 回答 1

2

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

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

或 Thinktecture.IdentityModel nuget 包。

于 2013-11-16T08:07:39.830 回答