gpt4 book ai didi

asp.net-core - IdentityServer4 - 如何实现模拟

转载 作者:行者123 更新时间:2023-12-03 19:04:44 27 4
gpt4 key购买 nike

我要求允许我们的内部支持用户冒充我们的客户用户。

我目前正在使用 IdentityServer4、隐式流和 OIDC 客户端。

目前找到的资源。

  • [Question]IdentityServer4 user impersonation #853
  • Generate access token with IdentityServer4 without password

  • 鉴于在线资源有限,是否有关于如何/应该如何使用 IdentityServer4 实现模拟的建议?

    最佳答案

    这该怎么做

    IdentityServer4 没有规定任何身份验证提供程序。对于其他 OIDC 客户而言,它本身就是一个。这就是为什么您可以使用第三方登录提供程序、本地帐户和其他任何东西的原因。

    在您的 IdentityServer 中创建一个 ImpersonationController。
    确保只有您的管理员才能访问此页面。

    [Authorize(Policy = "CanImpersonate")]

    构建一个页面,您可以在其中输入管理员想要模拟的用户 ID。
    使用预期的用户 ID 发布该表单时,请使用 SignInManager<>类以登录当前用户。

    如果这对您很重要,您甚至可以构建一个下拉列表,即您想要模拟的外部登录提供程序。
    使用 ExternalLoginSignInAsync方法,否则为普通 SignInAsync(user, false)方法。

    然后,您已经在 Identity Server 上以该用户的身份登录。当您的客户端应用程序请求登录时,IdentityServer 会注意到您的“伪造” session ,并会立即使用您当前登录的帐户重定向回客户端。

    您现在正在您的客户端应用程序和 IdentityServer 上模拟该用户。

    如果您在 IdentityServer 上注销,您将再次“升级”到您之前登录的帐户(如果仍以不同身份登录),或者需要再次以您的实际管理员帐户登录。

    你需要注意什么

    副作用

    这显然是一个争论的话题。我假设您想添加此功能,以便您可以重现用户问题,或以用户身份执行某些操作。

    如果您在用户不知情的情况下执行此操作,请非常小心在模拟期间执行的任何操作的副作用。是否发送电子邮件或类似通知。

    走这条路会失去很多信任。

    法律

    这也是对隐私的关注。谁可以访问详细信息。在您的平台上冒充用户时,会显示哪些详细信息。

    推荐

    不要冒充用户。

    实现一种受控方式,让您的管理员可以执行所需的工作。然后你就有了一个一致的审计日志,无论一个登录的用户对你的系统做了什么,你都可以确定是那个用户,而不是你的管理员冒充那个帐户。

    关于asp.net-core - IdentityServer4 - 如何实现模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45549824/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com