在WCF中使用BasicHttpBinding和TransportWithMessageCredential进行用户授权

本文关键字:TransportWithMessageCredential 用户 授权 BasicHttpBinding WCF | 更新日期: 2023-09-27 18:16:25

我目前有一个由TransportWithMessageCredential通过https保护的服务。这工作很棒!我现在需要为这个服务的一些操作添加一点粒度。

假设我有这个方法public IEnumerable<Project> GetProjects(),现在我需要添加一个额外的方法,它将投影限制为当前用户可以访问的项目。

使用如下代码:

var uid = System
        .ServiceModel
        .OperationContext
        .Current
        .IncomingMessageProperties
        .Security
        .ServiceSecurityContext
        .PrimaryIdentity;
var returnProjects = context.Projects.Where(p => p.ProjectManager.Equals(uid.Name));

会让我容易受到任何类型的攻击吗?

我认为这应该很好,因为WCF将首先击中我的自定义UserNamePasswordValidator并"验证"用户,然后我上面的代码将"授权"他们只获得他们的项目。我的想法有问题吗?

在WCF中使用BasicHttpBinding和TransportWithMessageCredential进行用户授权

不,这是完全正确的想法。这正是我们实现特定于用户的安全性的方式(除了我们使用FormsAuthentication来标识用户的一个小例外)。

在处理每个请求之前,我们总是检查用户,如果有任何可疑的请求,我们抛出异常。

相关文章:
  • 没有找到相关文章