Identityserver4 如何处理identityserver(.net identity)和js客户端之间的用户注册和数据流

Identityserver4 如何处理identityserver(.net identity)和js客户端之间的用户注册和数据流,identityserver4,Identityserver4,我有三个项目和两个环境 带有.Net标识的IdentityServer4(标识上下文) .Net API(业务上下文) Js客户端(角度) 我对实施注册有一些想法 当用户单击Js客户端中的注册按钮时,重定向到IdentityServer/Account/register url。用户成功注册后,向API发送必要的数据并生成相关行。然后我需要得到一个新的令牌到Js客户端,我不知道如何做注册后它 当用户单击Js客户端中的注册按钮时,用户转到Js客户端中的注册页面,向API发送凭据,API向Ident

我有三个项目和两个环境

  • 带有.Net标识的IdentityServer4(标识上下文)
  • .Net API(业务上下文)
  • Js客户端(角度)
  • 我对实施注册有一些想法

  • 当用户单击Js客户端中的注册按钮时,重定向到IdentityServer/Account/register url。用户成功注册后,向API发送必要的数据并生成相关行。然后我需要得到一个新的令牌到Js客户端,我不知道如何做注册后它

  • 当用户单击Js客户端中的注册按钮时,用户转到Js客户端中的注册页面,向API发送凭据,API向IdentityServer发送凭据。API从IdentityServer获取Jwt令牌,若用户成功创建,则在数据库中生成必要的行,然后将Jwt返回给Js客户端

  • 主要的问题是,在用户注册到IdentityServer之后,如何获取Jwt令牌,以及如何在Js客户端中将令牌安全地设置为localStorage或Cookie。我听过一些黑客攻击,比如将jwt作为url参数发送,但出于安全原因,这听起来不太好。 您是如何实现注册的?

    选项1看起来比另一个更好。所有登录/注册逻辑都应该在Auth服务器上处理。当用户点击save时,它将在数据库中创建一行。我不明白你的意思

    向API发送必要的数据并生成相关行

    身份验证服务器应该与数据库通信,并负责保存新注册的用户或登录名

    • 当用户成功注册时,您将为他们提供登录屏幕
    • 当他们成功登录时-他们将被重定向到您的客户端应用程序
    • 在客户端应用程序(因为它是js客户端)上,您可以使用oidc客户端库来管理用户状态(已登录/未登录)和JWT 代币。看看
    所以,简而言之,用户需要成功登录才能获得有效的令牌-仅注册并没有帮助

    选项1看起来比另一个好。所有登录/注册逻辑都应该在Auth服务器上处理。当用户点击save时,它将在数据库中创建一行。我不明白你的意思

    向API发送必要的数据并生成相关行

    身份验证服务器应该与数据库通信,并负责保存新注册的用户或登录名

    • 当用户成功注册时,您将为他们提供登录屏幕
    • 当他们成功登录时-他们将被重定向到您的客户端应用程序
    • 在客户端应用程序(因为它是js客户端)上,您可以使用oidc客户端库来管理用户状态(已登录/未登录)和JWT 代币。看看

    所以,简而言之,用户需要成功登录才能获得有效的令牌-仅注册并没有帮助

    我的意思是,我在业务上下文中有一个UserInfo类,它与具有fluentapi的其他实体有关系。因此,我将按照您的建议实施。另一件事是,我希望用户在注册后重定向到客户端。我的意思是,当他们注册时,他们也会登录。你当然可以这样做。您可以在帐户控制器中配置注册方法,但请确保使用signIn manager登录用户。检查所有检查的登录方法!我的意思是,我在业务上下文中有一个UserInfo类,它与具有fluentapi的其他实体有关系。因此,我将按照您的建议实施。另一件事是,我希望用户在注册后重定向到客户端。我的意思是,当他们注册时,他们也会登录。你当然可以这样做。您可以在帐户控制器中配置注册方法,但请确保使用signIn manager登录用户。检查所有检查的登录方法!