Arhn - архитектура программирования

Хранение учетных данных на сервере Java Google App Engine

У меня есть сервер Java, работающий на Google App Engine, с интеграцией со сторонними службами (например, SendGrid).

Как лучше всего хранить учетные данные (имена пользователей/пароли, ключи API) для этих сторонних сервисов? В коде Java или через файл конфигурации, такой как web.xml или appengine-web.xml, или где-то еще? Как мне получить доступ к учетным данным через код?


  • это может представлять интерес, прежде чем переходить к реализации: stackoverflow.com/questions/3777367/ 28.07.2016
  • Я обычно храню свои учетные данные в файлах свойств и загружаю их в статический класс конфигурации. Таким образом, код компилируется, даже если учетные данные отсутствуют, и вам не нужно передавать свои учетные данные в SCM (просто исключите файл свойств). 28.07.2016

Ответы:


1

Если вы используете Java в GAE, то

Вы можете сохранить учетные данные в файле в папке src/main/resources/ или, если вы не используете эту структуру, поместить файл в пакет src.

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

or

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

Ответ на вопрос о том, как читать, приведен здесь: Как загрузить файл из папки ресурсов?

затем вы можете преобразовать inputStream в Map или любое pojo, используя любые библиотеки Json, популярные из них,

  • Гсон
  • Джексон

Также убедитесь, что файл не отслеживается в системе управления версиями (если вы ее используете), чтобы файл был недоступен для других, и только во время развертывания вы могли внедрить этот файл.

Такое же решение применимо и для других языков, просто структура папок отличается от java.

29.07.2016
  • Спасибо, папка «ресурсы» скрыта от публики, как папка WEB-INF? 01.08.2016
  • Да, это доступно только для приложения, на самом деле оно будет в папке WEB-INF/classes 01.08.2016

  • 2

    На мой взгляд, хорошо сохранять конфиденциальные данные во внешних файлах в папке WEB-INF. Многие ключи от сторонних сервисов можно загрузить в виде файла, и вам нужно просто вставить его, например, пример файла

    И вы можете получить к нему доступ в коде, например

    getServletContext().getResourceAsStream("/WEB-INF/credentials.json")
    
    28.07.2016
  • Как файл будет доступен из-за пределов сервлета? 29.07.2016
  • Каталог WEB-INF является частной областью веб-приложения, любые файлы в каталоге WEB-INF не могут быть доступны непосредственно из браузера путем указания URL-адреса, например вашсайт/WEB-INF/credentials.json 29.07.2016
  • Я имел в виду, как бы вы получили доступ к файлу из метода, который не является сервлетом http? Я заметил, что вы использовали метод getServletContext(). 29.07.2016
  • Создайте один сервлет при запуске, прочитайте его там и передайте куда хотите 29.07.2016
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..