【发布时间】:2013-01-27 12:18:41
【问题描述】:
我正在尝试设计一个 Web 应用程序,该应用程序将使用 WCF 服务来访问数据并提供业务逻辑。所以总的来说,整个系统看起来像这样:
UI (ASP.NET MVC)
BusinessLayer (WCF Services)
DataLayer (Entity Framework)
Date (SQL Server Database)
系统的所有部分都将抵抗同一个封闭环境,因此我将使用证书来保护ASP.NET <-> WCF 连接。数据库连接将使用标准 EF 证券、连接字符串和 Windows 身份验证。
应用程序必须提供身份验证和授权功能。我将把大部分内容移到 ASP.NET 中,所以会有 ValidateUserAuth() 服务方法,用于验证凭据,但结果(用户所属的 UserRole)随后将由ASP 创建用户会话。
之后,每个服务方法调用都需要知道当前用户的 UserRole,才能返回正确的结果(或在必要时说“拒绝访问”)。 问题是我不想将 UserRole 作为每个服务方法的参数传递!我想让它自动发生。 WCF 甚至可以吗?
我只需要:
- 从 ASP.NET 应用程序发出的每个服务调用都将使用从当前 ASP 会话中获取的用户数据进行扩展。
- 该调用调用的服务方法将能够接收该用户数据并根据用户权限使用它来提供结果。
- 所有这一切都会以某种方式在后台发生,因此不会向从 Service 公开的每个 Service Method 添加额外的
UserDetails方法参数。
我阅读了很多关于 WCF 本身的内容,但发现了可以满足我要求的任何内容。我希望我只是错过了它,它仍然是可能的。
【问题讨论】:
标签: asp.net wcf authorization soa