带有自定义存储库的 IdentityServer3 自定义用户服务
IdentityServer3 Custom UserService with custom repository
根据 EntityFramework and CustomUserService 示例,我正在尝试根据单独的用户数据库对用户进行身份验证。
在工厂里,我是这样注册服务的:
factory.UserService = new Registration<IUserService>(resolver => new CustomUserService());
但是,如果我想使用多个用户数据库,如何注入我想使用的存储库或连接字符串?
目标是让不同的客户端从同一授权服务器获得使用资源(如 API)的授权,但指向不同的用户存储库。因此,身份服务器将使用一个数据库,其中将设置客户端、范围、重定向 URI 等。但是要对用户进行身份验证,我想根据客户端使用不同的数据库。
有什么办法吗?
谢谢
我们有一个非常相似的问题,并通过在 acr_values 上使用租户解决了它,即在对 /connect/token 的调用中,除了用户名、密码等之外,我们还传递了以下内容:
acr_values=tenant:YourTenantString
YourTenantString 将识别数据库环境,从那里,在您的用户服务中,您可以通过以下方式提取它:
var dbid = context.SignInMessage.Tenant;
从 dbid 我们能够从配置中获取连接字符串
根据 EntityFramework and CustomUserService 示例,我正在尝试根据单独的用户数据库对用户进行身份验证。
在工厂里,我是这样注册服务的:
factory.UserService = new Registration<IUserService>(resolver => new CustomUserService());
但是,如果我想使用多个用户数据库,如何注入我想使用的存储库或连接字符串?
目标是让不同的客户端从同一授权服务器获得使用资源(如 API)的授权,但指向不同的用户存储库。因此,身份服务器将使用一个数据库,其中将设置客户端、范围、重定向 URI 等。但是要对用户进行身份验证,我想根据客户端使用不同的数据库。
有什么办法吗?
谢谢
我们有一个非常相似的问题,并通过在 acr_values 上使用租户解决了它,即在对 /connect/token 的调用中,除了用户名、密码等之外,我们还传递了以下内容:
acr_values=tenant:YourTenantString
YourTenantString 将识别数据库环境,从那里,在您的用户服务中,您可以通过以下方式提取它:
var dbid = context.SignInMessage.Tenant;
从 dbid 我们能够从配置中获取连接字符串