【问题标题】:IdentityServer lock users to the clientsIdentityServer 将用户锁定到客户端
【发布时间】:2018-09-14 17:29:27
【问题描述】:

Identityserver4 为 SSO 提供了开箱即用的无限客户端和 API 资源。

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

方法 1

  • userId 和 clientId 的映射表
  • 在登录/反向通道调用时,验证用户后,额外检查已验证用户是否有客户端映射,如果有,请检查并相应返回。

通过上述方法,我们如何处理 SSO?如果用户登录到另一个客户端并尝试访问受限客户端时,仍然会登录,因为 cookie 身份验证启动并允许用户登录。

我们如何在身份服务器上限制这种行为? (带有 aspnetidentity)..

方法 2

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

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

我目前正在开发一个示例应用程序来查看它的实际效果。感谢解决上述问题的任何帮助

【问题讨论】:

  • 您找到解决方案了吗?我现在也面临同样的问题

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


【解决方案1】:

方法 1 中,即使用户已经登录并拥有 cookie,仍会调用授权端点。您可以使用ICustomAuthorizeRequestValidator(使用AddCustomAuthorizeRequestValidator() 注册)进行额外的验证检查,如果用户不满足您设定的要求,则返回错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-26
    • 1970-01-01
    • 2015-02-01
    • 1970-01-01
    • 2020-08-30
    • 2019-03-24
    • 1970-01-01
    相关资源
    最近更新 更多