IdentityServer3自定义用户服务与自定义存储库

时间:2015-11-30 11:43:47

标签: dependency-injection identityserver3

根据EntityFrameworkCustomUserService示例,我尝试针对单独的用户数据库对用户进行身份验证。

在工厂里,我注册了这样的服务:

factory.UserService = new Registration<IUserService>(resolver => new CustomUserService());

但是,如果我想使用多个用户数据库,我该如何注入我想要使用的存储库或连接字符串?

目标是让不同的客户端获得从同一授权服务器使用资源(如API)的授权,但指向不同的用户存储库。因此,身份服务器将使用一个数据库,其中将设置客户端,范围,重定向URI,etxc。但是为了验证用户,我想使用不同的数据库,具体取决于客户端。

有没有办法做到这一点?

由于

1 个答案:

答案 0 :(得分:1)

我们遇到了一个非常类似的问题并通过在acr_values上使用租户来解决它,即在调用/ connect / token时,除了用户名,密码等之外,我们还传递了以下内容:

acr_values=tenant:YourTenantString

YourTenantString将识别数据库环境,然后在您的用户服务中,您可以通过以下方式提取它:

var dbid = context.SignInMessage.Tenant;
从dbid

我们能够从config

获取连接字符串