Angular 如何确保;弹簧应用

Angular 如何确保;弹簧应用,angular,spring-security,Angular,Spring Security,我们开发了一个应用程序,Angular 5作为前端,Spring Boot作为后端。 第一个页面是登录页面,它调用RESTAPI在后端通过LDAP进行身份验证。 我们将OAuth实现与JWT一起使用。因此,当用户登录时,凭据用户名和密码是通过。将正文中的请求发布到rest api以进行身份验证。 在标题中,我们为Oauth发送clientId和secret。 问题是凭证在请求中被公开,并且可以在浏览器开发人员选项中看到。 我需要一种方法来屏蔽/加密这些凭据。您可以使用该库对应用程序中的密码进行加

我们开发了一个应用程序,Angular 5作为前端,Spring Boot作为后端。 第一个页面是登录页面,它调用RESTAPI在后端通过LDAP进行身份验证。 我们将OAuth实现与JWT一起使用。因此,当用户登录时,凭据用户名和密码是通过。将正文中的请求发布到rest api以进行身份验证。 在标题中,我们为Oauth发送clientId和secret。 问题是凭证在请求中被公开,并且可以在浏览器开发人员选项中看到。 我需要一种方法来屏蔽/加密这些凭据。

您可以使用该库对应用程序中的密码进行加密

安装:

npm install crypto-js
用法:

var AES = require("crypto-js/aes");
var SHA256 = require("crypto-js/sha256");
var MD5 = require("crypto-js/md5");
console.log(AES("YOUR PASSWORD"));//AES ENCRYPTION
console.log(SHA256("YOUR PASSWORD"));//SHA256 ENCRYPTION
console.log(MD5("YOUR PASSWORD"));//MD5 ENCRYPTION

谢谢,希望这有帮助

那么,在网络选项卡的请求中公开的密码是非常“正常”的——毕竟,您的API需要读取密码并检查密码是否有效

您仍然可以做以下几件事:

  • 您肯定应该通过https进行通信,并且还可以使用几个附加的安全头
  • 您可以在浏览器端对密码进行散列,并将散列视为用户密码
    • 更改客户端中的哈希函数几乎是不可能的,因为它需要所有用户重新输入密码
    • 您不能执行任何API端密码强度验证
  • 您可以在浏览器端加密密码,并在API中解密密码。
    • 您仍然应该在API中散列密码,并且不要存储来自客户端的加密密码(因为用户可以在源代码中看到加密)
实际上我不喜欢散列变量,因为你失去了对密码强度的控制,理论上有人可以使用API创建一个密码为“Test”或类似的用户


第二种方法确实对您有所帮助,因此它在“网络”选项卡中不可见。但是请注意,如果有人真的在乎,他可以在您的源代码中查找加密,如果他有权访问它,他仍然可以在请求中解密它

请不要使用MD5加密,它是不安全的。谢谢Vipul。若我使用crypto-lib在angular端进行加密,我需要在后端spring应用程序中对其进行解密,以使用ldap对其进行身份验证。有什么办法可以在spring后端解密吗?通常我们不会在前端加密密码,让它在网络控制台中可见,但我相信这在java方面可能会有所帮助,谢谢Nicolas。1.如何在angular和spring上使用相同的证书来配置https?2.如果我在前端加密密码,我需要在后端spring解密密码,我在网上找不到任何相关文章。@罗杰,看起来你缺少一些基础知识。我建议使用https在SpringWebServer上做一个教程。客户端提供证书。你可以创建一个自签名的,从lets encrypt或buy获得一个免费的。至于你的第二点,这与角度/弹簧无关。只要找到一个两种语言都支持的加密,比如base64。你实现了吗?请给我一个想法。