微服务安全与保护
2020-03-22 本文已影响0人
engineer_tang
应用程序的安全包括:
- 确保有正确的用户控制,验证用户信息是否存在,以及验证用户当前访问的接口是否有操作权限。
- 保持运行的服务器的基础设施是打过补丁且最新的,以让漏洞的风险最低。
- 对网络访问进行控制,让少量的已授权服务器能够访问服务,并使服务只能通过定义良好的端口进行访问。
这里只针对第1要点进行讨论。
对第一要点有两个关注点:
1)在调用微服务的用户是否真实存在且合法。
2)访问当前接口的用户是否具有该请求接口的操作权限。
使用到的技术:Spring Cloud Security、Oauth2(Open Authentication)
Oauth2介绍
Oauth2是一个基于令牌的安全框架,允许用户使用第三方验证服务进行验证。如果用户成功进行了验证,则会出示一个令牌,该令牌必须与每一个请求一起发送。然后,验证服务可对令牌进行确认。
Oauth2的目标是在调用多个服务来完成用户请求时,用户不需要在处理请求的时候为每个服务都提供自己的凭据信息就能完成验证。它允许应用程序开发人员轻松地与第三方云服务提供商集成,并使用这些服务进行用户验证和授权,而无须不断地将用户的凭据传递给第三方服务。
Oauth2是一个基于令牌的安全验证和授权框架,由一下四个部分组成:
1)受保护资源
2) 资源所有者
3)应用程序
- Oauth2验证服务器
Oauth2规范包含如下4种类型的授权:
1)密码(password)
2)客户端凭据(client credential) - 授权码(authorization code)
- 隐式(implicit)
公钥私钥生成
C:\Program Files\Java\jdk1.8.0_231\bin
keytool -genkeypair -alias oa-jwt -validity 3650 -keyalg RSA -dname "CN=tangjoe,OU=yuyingroup,O=yuyingroup,L=sz,S=zurich,C=CN" -keypass oasys830 -keystore oa-jwt.jks -storepass oasys830
生成公钥
keytool -list -rfc --keystore oa-jwt.jks | openssl x509 -inform pem -pubkey
参考:https://www.jianshu.com/p/4ce5577bab74
参考:https://www.jianshu.com/p/402bda62a7c3
参考:https://segmentfault.com/a/1190000019894976