以下面的案例为例。在客户端 - 服务器构建之间共享秘密的好策略
您已经使用OAuth2保护了RESTful API层。另一方面,为了让用户对您的API进行身份验证,您需要请求访问令牌(即grant_type=password
)。
为了请求密码访问令牌,客户端应用程序需要一个OAuth客户端(密钥+密钥对)。
现在您已配置好所有使用持续集成和连续部署。
在发展建立,在构建脚本创建的测试数据,包括OAuth用户端。显然,如果构建创建测试数据,则它先前会删除自动测试期间创建的所有数据。
所以你希望你的客户端应用程序使用的OAuth用户端之一,你想避免硬编码其中之一,因为他们使用的API的基础设施创建的,所以他们从头开始重新创建上每个版本。
认为前端和后端是由不同的构建脚本构建的。
结论&问题
什么是共享服务器和客户端架构之间的秘密,所以无论起床,用相同的安全机密运行同步的好办法?
一些想法
操作系统的环境变量。我可以将这些秘密存储在构建机器环境变量中。也就是说,客户端基础架构将始终以最新的秘密进行构建和部署。
与#1相同,但将这些机密存储在生成机器的共享目录中。
嘿,谢谢你的努力。看起来你答案的第一部分根本不回答我的问题。我没有试图共享TFS访问令牌,而是分享我自己的基础架构所需的不记名令牌。另一方面,我正在尝试环境变量的方法,但是我的工作并不完善,因为既然客户端应用程序和后端都在同一个构建代理上工作,那么在重新启动代理之前,我无法看到updatedenvironment变量服务...所以我结束了序列化这些凭据到JSON,然后我将文件存储在一个共同的已知位置 –
@MatíasFidemraizer将令牌序列化为JSON是好的,您可以发布答案。 –
我明白了。我已经添加了它。无论如何,我感谢你的努力! –