【问题标题】:Proper place for oAuth2 clientId & clientSecretoAuth2 clientId 和 clientSecret 的正确位置
【发布时间】:2017-04-19 10:36:03
【问题描述】:

我正在开发我的 Web 应用程序,该应用程序支持使用第三方服务进行 oAuth2 身份验证。所以我有我的clientIdclientSecret 密钥,我用它们来授权我的应用程序。

我正在使用 Spring security oAuth 依赖项并在 props 中配置所有这些。所以这就是问题所在:据我所知,将这些信息保存在类路径道具中是不安全的。另一方面,我正在寻找一种解决方案,它允许我的应用程序在没有任何第三方道具/配置的情况下从盒子中启动并运行(所以我不喜欢将这些道具放在环境方面的想法)

我想知道是否有保留clientIdclientSecret 键的最佳做法?

【问题讨论】:

  • 使用application.properties文件,这是最好的地方
  • 恕我直言,我认为如果您使用基于 java 的配置,最好使用属性文件配置,看看这里oauth2 example - java config
  • 我关心的是安全性。将这些仅存储在 java config 或 application.properties 中会导致这些密钥可能被盗(因为它们不安全)并被另一个应用程序重用,假装它是我的。这就是为什么我在这里寻找一些最佳实践。

标签: java spring spring-security oauth-2.0 spring-security-oauth2


【解决方案1】:

在 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);

【讨论】:

    猜你喜欢
    • 2017-09-01
    • 2014-09-03
    • 1970-01-01
    • 2021-07-31
    • 2012-08-01
    • 1970-01-01
    • 2021-07-21
    • 2015-07-15
    • 2017-11-07
    相关资源
    最近更新 更多