在Google App Engine Java服务器中存储凭据

时间:2016-07-28 02:41:40

标签: java security google-app-engine credentials

我在Google App Engine上运行Java Server,并与第三方服务(例如SendGrid)集成。

为这些第三方服务存储凭据(用户名/密码,API密钥)的最佳方法是什么?在Java代码中,还是通过web.xml或appengine-web.xml等配置文件?我如何通过代码访问凭证?

2 个答案:

答案 0 :(得分:1)

如果您在GAE中使用Java,那么

您可以将凭据保存在 src / main / resources / 下的文件中,或者如果您不使用此结构,请将文件放在 src 包中。

ClassLoader classloader = Thread.currentThread().getContextClassLoader();
InputStream is = classloader.getResourceAsStream("credentials.json");

InputStream is = AnyClassName.class.getResourceAsStream("credentials.json");

如何阅读,How do I load a file from resource folder?

然后你可以使用任何Json库将inputStream转换为Map或任何pojo,流行的是,

  • GSON
  • 杰克逊

还要确保在版本控制中没有跟踪文件(如果使用任何文件),以便该文件不可供其他人使用,并且只有在部署期间才能注入该文件。

同样的解决方案也适用于其他语言,只是不像java那样的文件夹结构。

答案 1 :(得分:0)

在我看来,将敏感数据保存在WEB-INF文件夹中的外部文件中是很好的。第三方服务的许多密钥都可以像文件一样下载,你需要粘贴它,比如example file

您可以使用

等代码访问它
getServletContext().getResourceAsStream("/WEB-INF/credentials.json")