我刚开始一份新工作,并被指定为改善现有应用的第一项任务。此应用是一个简单的个人资料管理器,其中包含个人资料创建,版本....并使用基于声明的授权来确定当前用户是否能够创建新的个人资料。
由于我不熟悉这种授权系统,我阅读了很多相关内容,更新了应用程序的安全声明,现在可以正常使用。
但是,有些事困扰我。据我了解,检查行动的可能性有两个结果:
true
),没有任何反应,很酷。false
)。抛出异常,在我的客户端中捕获,然后将canCreateProfile
变量变为false。标准的例子是:
try
{
ClaimsPrincipalPermission.CheckAccess(Resource.Profile.ToString(), ResourceAction.Create.ToString());
}
catch
{
return false;
}
嗯......我觉得这很令人不安。 一个典型的用法示例:如果我是只读用户,则每次选择新配置文件时都会触发三个异常。不慢,但不知何故令人不安
基于声明的授权是否实际上只依赖于例外,还是有一种方法可以直接使用布尔值?
A first chance exception of type 'System.Security.SecurityException' occurred in Microsoft.IdentityModel.dll
无论如何都给了我毛骨悚然!
谢谢!
答案 0 :(得分:0)
当然 - 没有什么能阻止您自己构建AuthorizationContext(设置资源,操作和主体)并手动调用AuthorizationManager。您可以通过FederatedAuthentication类进入它。
这是MVC / Web API的一个示例 http://leastprivilege.com/2012/10/26/using-claims-based-authorization-in-mvc-and-web-api/