Angular 5/6 登录认证

Angular 5/6 log-in authentication

最近,我正在使用 Angular 5 项目和 asp.net 核心网络 api,从旧项目升级到新项目。 虽然对于日志认证过程,通常我们应该将原始密码发送到数据库但加密它,目前我不确定下面哪种方式是最好的方法?

  1. 通过Angular/Typescript加密密码然后发送到网络api

  2. 通过Angular/Typescript加密密码然后发送到webapi再加密,最后发送到数据库验证。

  3. 将原始密码发送到网络api然后在内部加密然后发送到数据库进行验证。

    或者有什么与上述不同的建议?

安全的方法是使用身份提供程序,例如 Azure AD 或 IdentityServer。对于 SPA,推荐的方法是 OAuth 2 Implicit Flow

如果您不能使用身份提供者,则可以使用选项 3,稍作修改 -

  • Angular 应用程序通过 HTTPS 将用户名和密码发送到服务器,服务器使用存储在数据库中的散列密码进行验证.
  • 如果用户有效,则响应 JSON Web Token (JWT) 返回 Angular应用程序。