我正在开发支持第三方服务的 oAuth2 身份验证的 Web 应用程序。所以我有
clientId
和 clientSecret
键,我用它们来授权我的应用程序。
我正在使用 Spring security oAuth 依赖项并在 props 中配置所有这些。所以这就是问题:据我了解,将这些信息保存在类路径道具中是不安全的。另一方面,我正在寻找一种解决方案,允许我的应用程序在没有任何第三方道具/配置的情况下从盒子中启动并运行(所以我不喜欢将这些道具放在环境方面的想法)
我想知道是否有保留
clientId
和 clientSecret
键的最佳实践?
在 Salesforce,我们以加密方式将敏感信息存储在属性中。例如:
sensitive.property=ENC(2sfs25D!==)
当应用程序启动时,它会读取这些属性,识别哪些属性已加密并解密它们。例如,可以向 spring 默认 @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);
我只使用应用程序属性或使用 .env 文件或我使用终端手动设置它们