在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
并"验证"用户,然后我上面的代码将"授权"他们只获得他们的项目。我的想法有问题吗?
不,这是完全正确的想法。这正是我们实现特定于用户的安全性的方式(除了我们使用FormsAuthentication来标识用户的一个小例外)。
在处理每个请求之前,我们总是检查用户,如果有任何可疑的请求,我们抛出异常。