根据EntityFramework和CustomUserService示例,我尝试针对单独的用户数据库对用户进行身份验证。
在工厂里,我注册了这样的服务:
factory.UserService = new Registration<IUserService>(resolver => new CustomUserService());
但是,如果我想使用多个用户数据库,我该如何注入我想要使用的存储库或连接字符串?
目标是让不同的客户端获得从同一授权服务器使用资源(如API)的授权,但指向不同的用户存储库。因此,身份服务器将使用一个数据库,其中将设置客户端,范围,重定向URI,etxc。但是为了验证用户,我想使用不同的数据库,具体取决于客户端。
有没有办法做到这一点?
由于
答案 0 :(得分:1)
我们遇到了一个非常类似的问题并通过在acr_values上使用租户来解决它,即在调用/ connect / token时,除了用户名,密码等之外,我们还传递了以下内容:
acr_values=tenant:YourTenantString
YourTenantString将识别数据库环境,然后在您的用户服务中,您可以通过以下方式提取它:
var dbid = context.SignInMessage.Tenant;
从dbid 我们能够从config
获取连接字符串