2

我目前正在开发后端基础架构,我可能需要一些建议。

首先,这是当前的全局架构:

  • 我在 IIS 中托管了 WCF 服务
  • 我在 SQL Server 上托管了多个数据库。ClientData每个客户端一个数据库和一个全局MasterDatabase.
  • MasterDatabase包含与连接字符串关联的凭据的映射。该数据库允许我ClientData根据提供的凭据使用适当的数据库(通过实体框架)。
  • 我正在使用基于 SSL 的基本身份验证。
  • checkAccessCore()凭据验证是在我的子类中的重写方法中完成的ServiceAuthorizationManager。在该方法中,我 fetchMasterDatabase确保凭据正确(使用 Bcrypt 将密码保存在 DB 中)并检索连接字符串。
  • 检索到连接字符串后,我将创建一个CustomIdentity继承自GenericIdentity. 使用该实例,我可以设置Thread.CurrentPrincipal属性。
  • 每个 WCF 服务实现都会从中检索连接字符串CustomPrincipal,以便从相应的ClientData数据库中获取数据。

我的问题/想法如下:

  1. 如果我决定在我的 WCF 服务中使用并发,我将如何处理它,因为这CheckAccessCore是一种强制并发操作按顺序运行的 WCF 扩展方法?

    http://support.microsoft.com/kb/KbView/2907010

    这意味着我的所有呼叫都将在该checkAccessCore级别排队和阻塞。

    覆盖checkAccessCore是我发现在调用堆栈早期拦截调用以验证用户凭据的最佳方法。

  2. 除了通过自定义身份之外,我是否应该使用不同的方式来传输客户端连接字符串?它安全吗?

如果我使用并发,我猜设置到的身份CustomPrincipal将被覆盖。如果是,如何处理?

4

0 回答 0