我正在开发支持使用第三方服务进行oAuth2身份验证的Web应用程序。所以我有clientId
和clientSecret
个密钥,用于授权我的应用程序。
我正在使用Spring security oAuth依赖项并在props中配置所有这些。所以这就是问题:据我所知,将这些信息保存在classpath中不安全的道具中。从另一方面来说,我正在寻找一种解决方案,它可以让我的应用程序在没有任何第三方道具/配置的情况下启动并运行(所以我不喜欢将这些道具放在环境方面)< / p>
我想知道是否有保留clientId
和clientSecret
密钥的最佳做法?
答案 0 :(得分:0)
在Salesforce,我们以加密方式将敏感信息存储在属性中。例如:
sensitive.property=ENC(2sfs25D!==)
当应用程序启动时,它会读取这些属性,识别哪些属性已加密并对其进行解密。例如,可以添加自定义逻辑来弹出默认的@value读数。
根据您公司的安全准则,使用适当的加密算法。比如Scrypt: https://mvnrepository.com/artifact/com.lambdaworks/scrypt
int SCRYPT_N_PARAM = 65536;
int SCRYPT_R_PARAM = 8;
SCryptUtil.scrypt(str, SCRYPT_N_PARAM, SCRYPT_R_PARAM, 1);