IdentityServer将用户锁定到客户端

时间:2018-04-05 02:12:02

标签: asp.net-identity multi-tenant identityserver4

Identityserver4为SSO提供了无限制的客户端和api资源。

如果我们想限制用户只访问指定的客户端,那么最好的方法是什么?

方法1

  • userId和clientId的映射表
  • on login / back channel calls,在验证用户之后,进行额外检查以查看经过身份验证的用户是否具有客户端映射,如果是,则进行检查并相应地返回。
用上面的方法我们如何处理SSO?如果用户登录到另一个客户端并尝试访问受限客户端,仍然会登录,因为cookie身份验证启动并允许用户登录。

我们如何在identityserver上限制此行为? (与aspnetidentity)..

方法2

  • 在身份验证上下文请求中传递acr_values
  • 让用户通过使用tenantid(like this)扩展IdentityUser来支持租户ID

当用户登录另一个客户端并尝试登录受限客户端时,可能会遇到与上述相同的问题,由于SSO cookie,idsrv可能会说正常。

我目前正在开发示例应用以查看此操作。感谢任何解决上述问题的帮助

1 个答案:

答案 0 :(得分:0)

方法1 中,即使用户已登录并拥有Cookie,仍会调用授权端点。您可以使用ICustomAuthorizeRequestValidator(使用AddCustomAuthorizeRequestValidator()注册)进行其他验证检查,如果用户不符合您的要求,则返回错误。