相关疑难解决方法(0)

WCF服务授权模式

我正在实现一个安全的WCF服务.使用用户名/密码或Windows凭据进行身份验证.该服务托管在Windows服务进程中.现在,我正在尝试找出为每个服务操作实现授权的最佳方法.

例如,请考虑以下方法:

public EntityInfo GetEntityInfo(string entityId);
Run Code Online (Sandbox Code Playgroud)

您可能知道,在WCF中,有一个OperationContext对象,您可以从中检索调用方/客户端传入的安全凭据.现在,在调用方法的第一行时,身份验证已经完成.但是,如果决策取决于输入数据本身,我们如何实施授权?例如,在上述情况下,说'admin'用户(其权限等存储在数据库中),允许获取实体信息,不允许其他用户...我们在哪里进行授权检查?

假设我们把它放在方法的第一行,如下所示:

CheckAccessPermission(PermissionType.GetEntity, user, entityId) //user is pulled from the current OperationContext
Run Code Online (Sandbox Code Playgroud)

现在,有几个问题:

  1. 我们在授权检查之前验证entityId(例如检查null /空值等)还是INSIDE授权检查?换句话说,如果每个方法都应该包含授权检查,那么这是一个好的模式吗?哪个应该首先发生 - 参数验证或授权?

  2. 当授权检查遍布这样的地方时,我们如何对WCF服务进行单元测试,并且我们在单元测试中没有OperationContext!?(假设我试图在没有任何WCF设置的情况下直接测试这个服务类实现).

有什么想法吗?

.net c# wcf authorization

7
推荐指数
3
解决办法
1万
查看次数

在带有WCF的App.config中使用Windows角色身份验证

我正在使用WCF服务和net.tcp端点,其serviceAuthentication的主要PermissionMode设置为UseWindowsGroups.

目前在服务的实现中,我使用PrincipalPermission属性来设置每个方法的角色要求.

        [PrincipalPermission(SecurityAction.Demand, Role = "Administrators")]
        [OperationBehavior(Impersonation = ImpersonationOption.Required)]
        public string method1()
Run Code Online (Sandbox Code Playgroud)

我尝试做的几乎完全相同,除了在app.config中设置角色的配置.有没有办法做到这一点,仍然使用Windows组身份验证?

谢谢

wcf app-config windows-authentication

7
推荐指数
2
解决办法
1万
查看次数

如何从LINQ迁移到SQL到"LINQ to WCF"?

我正在整理一个WPF应用程序,该应用程序最终将使用WCF Web服务作为其数据源.

在原型设计阶段,我在SQL 2008数据库上使用LINQ to SQL,并开始欣赏我可以轻松地"添加新项| LINQ to SQL Classes"并为表生成模型类,然后说话使用LINQ将它传递给我的XAML UI,非常好.

但是当我们将数据源从SQL Server切换到WCF Web服务时会发生什么?为了继续使用LINQ,我将不得不:

  • 手动编写我自己的LINQ-to-web-service类(使用IQueryable等?)
  • 有没有一个代码生成工具,这样做,像"LINQ-to-WCF"(奇怪,这个术语甚至没有出现在谷歌)
  • 或者我是否必须从我的Web服务中低效地获取大量记录,从中创建对象,然后到LINQ到对象来查询它们?

感谢您在这里给出的任何方向.

补充:感谢答案,非常有帮助,但导致一些混乱:

  • 这个MSDN教程说"添加新项| ADO.NET实体数据服务 "
  • 我有VS2008,可以做"添加新项目| ADO.NET实体数据模型 "
  • 这个MSDN视频说用ADO.NET数据服务模板创建一个新项目,我在VS2008中没有这个模板
  • 所有这些最常用的是什么?
  • 从我到目前为止所读到的与"LINQ to Entities"有关的任何内容都需要成本,而"LINQ to SQL"是免费的,那么上面的"实体数据服务/模型"选项与LINQ to Entities有关吗?

linq wpf wcf linq-to-sql

7
推荐指数
2
解决办法
2759
查看次数