向OperationContext.RequestContext.RequestMessage添加值是否安全?

时间:2015-01-28 19:29:38

标签: .net wcf authorization

我正在使用授权令牌的WCF服务,其中令牌解析为用户名。访问是一种全有或全无的事情:拥有有效令牌的人应该能够做任何事情,没有有效令牌的人应该被拒绝。

我已经设置了这样的授权管理器:

public class AuthorizationManager : ServiceAuthorizationManager
{
    protected override bool CheckAccessCore(OperationContext operationContext)
    {
        var query = operationContext.IncomingMessageProperties.Via.Query;
        var parameters = HttpUtility.ParseQueryString(query);
        var token = parameters["token"];

        if (TokenIsValid(token)) {
            var username = GetUsername(token);
            operationContext.RequestContext.RequestMessage.Properties.Add("username", username);
            return true;
        } else {
            return false;
        }         
    }
}

以为我稍后会使用OperationContext.Current.RequestContext.RequestMessage.Properties["username"];

访问此值

我的问题是,我能相信这种技巧吗?用户是否可以欺骗RequestMessage.Properties中的值,或者仅在WCF服务类内部使用?有没有更好的地方存储数据,因此无法由用户操纵?

0 个答案:

没有答案