因此,我正在使用Spring 2中的OAuth2测试Security。
我把这个网站作为我的参考:
https://dzone.com/articles/secure-spring-rest-with-spring-security-and-oauth2
一旦设置了授权服务器,就可以通过传递POST请求使用http://localhost:8080/oauth/token端点从它获得令牌。
使我感到不安的是,POST请求必须以我的用户名和密码作为纯文本。
POST /oauth/token HTTP/1.1
Host: localhost:8080
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="grant_type"
password
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="username"
admin
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="password"
password
------WebKitFormBoundary7MA4YWxkTrZu0gW--这不是很大的安全威胁吗?从客户端到服务器的每一个路由器都能看到POST主体的内容吗?
现在,为了解决这个问题,假设我使用javascript中的客户端对称加密算法来加密密码。由于所有客户端都将获得相同的加密算法,沿途的路由器可以对称地解码我的密码。这还不够好。
如果我必须将凭证作为纯文本传递,那么Security的用途是什么?我在这里做错什么了吗?大公司不可能利用这一点。Security中是否有其他设施可以让我们防止这种情况?
发布于 2018-10-22 05:46:12
您必须使用HTTPS (TLS),请参阅OAuth 2.0授权框架
令牌端点 ..。 由于对令牌端点的请求导致了明文凭据(在HTTP请求和响应中)的传输,因此授权服务器在向令牌端点发送请求时必须使用TLS,如第1.6节所述。
如果您的授权服务器实现允许不安全的通信,则它不符合OAuth2规范。
https://stackoverflow.com/questions/52919324
复制相似问题