如何处理身份服务器(.net身份)和js客户端

时间:2017-07-26 14:30:16

标签: identityserver4

我有三个项目和两个EF上下文

  1. 具有.Net标识的IdentityServer4(身份上下文)
  2. .Net API(商务背景)
  3. Js Client(Angular)
  4. 我对实施注册有一些想法;

    1. 当用户点击Js客户端中的注册按钮重定向到IdentityServers / Account / Register url时。用户成功注册后,将必要的数据发送到API并生成相关的行。然后我需要向Js客户端获取一个新令牌,我注册后不知道怎么做。

    2. 当用户在Js Client中单击Register Button时,用户转到Js Client中的Register页面,将凭据发送到API,API将凭据发送到IdentityServer。 API从IdentityServer获取Jwt令牌,如果用户成功创建,则在数据库中生成必要的行,然后将jwt返回给Js Client。

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

1 个答案:

答案 0 :(得分:2)

选项#1看起来比另一个好。所有登录/注册逻辑都应在Auth服务器上处理。当用户点击保存时,它将在您的数据库中创建一行。

无法理解你的意思
  

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

您的auth服务器应与您的数据库通信,并应负责保存新注册的用户或登录。

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

简而言之,用户需要成功登录才能获得有效令牌 - 单独注册无济于事!