我目前正在开发后端基础架构,我可能需要一些建议。
首先,这是当前的全球架构:
ClientData
数据库,一个全局MasterDatabase
。MasterDatabase
包含与连接字符串关联的凭据映射。该数据库允许我根据提供的凭据使用适当的ClientData
数据库(通过实体框架)。checkAccessCore()
子类中的重写方法ServiceAuthorizationManager
中完成。在该方法中,我获取MasterDatabase
,确保凭据正确(密码使用Bcrypt保存在DB中)并检索连接字符串。CustomIdentity
的类GenericIdentity
的实例。然后,我可以使用该实例设置Thread.CurrentPrincipal
属性。CustomPrincipal
检索连接字符串,以便从相应的ClientData
数据库中获取数据。我的问题/想法如下:
如果我决定在我的WCF服务中使用并发,我将如何处理,因为CheckAccessCore
是WCF扩展的一种方法,迫使并发操作按顺序运行?
http://support.microsoft.com/kb/KbView/2907010
这意味着我的所有通话都会在checkAccessCore
级别加入队列并被阻止。
覆盖checkAccessCore
是我发现在调用堆栈的早期拦截调用以验证用户凭据的最佳方式。
我应该使用不同的方式来传输除自定义标识之外的客户端连接字符串吗?它安全吗?
如果我使用并发,我想将覆盖CustomPrincipal
中设置的身份。如果是的话,如何处理?