首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WCF PrincipalPermission授权

WCF PrincipalPermission授权
EN

Stack Overflow用户
提问于 2014-05-29 14:37:06
回答 1查看 2.6K关注 0票数 0

我试图在每个wcf web方法上设置角色授权。

也许我做错了什么,但我就是不能得到授权。

我有一个授权用户访问服务的UserNamePasswordValidator。

然后,授权策略获取用户角色,并针对evalutaionContext设置主体。我已经在GenericPrincipal和我自己的CustomPrincipal上尝试过了。

然而,无论角色如何,web方法总是被执行。

AuthorizationPolicy

代码语言:javascript
复制
class AuthorizationPolicy : IAuthorizationPolicy {
        public bool Evaluate(EvaluationContext evaluationContext, ref object state) {         

            IIdentity client = GetClientIdentity(evaluationContext);

            string[] roles = new string[1];
            roles[0] = GetRoles(client);
            GenericPrincipal newPrincipal = new GenericPrincipal(client, roles);
            //CustomPrincipal newPrincipal = new CustomPrincipal(client, roles);
            evaluationContext.Properties["Principal"] = newPrincipal;                
            return true;
        }

        private IIdentity GetClientIdentity(EvaluationContext evaluationContext) {
            object obj;
            if (!evaluationContext.Properties.TryGetValue("Identities", out obj))
                throw new Exception("No Identity found");

            IList<IIdentity> identities = obj as IList<IIdentity>;
            if (identities == null || identities.Count <= 0)
                throw new Exception("No Identity found");

            return identities[0];
        }

PrincipalPermission是如何链接到主体的?

代码语言:javascript
复制
[OperationContract]
        [WebInvoke(Method = "GET",
                    ResponseFormat = WebMessageFormat.Json,
                    UriTemplate = "/GetResults")]
        [PrincipalPermission(SecurityAction.Demand, Role = "User")]
        int? GetResults();

我的CustomPrincipal有一个IsInRole方法,我应该做其他的事情来确保PrincipalPermission验证角色吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-29 15:40:09

好吧,发现我的问题了。有点愚蠢,但我在接口上设置了PrincipalPermssions,而它们需要针对该方法。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23935978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档