Как скрыть учетные данные OAuth, хранящиеся в приложении Angular? - PullRequest
0 голосов
/ 01 апреля 2019

Я работаю с приложением Angular 7, которое выполняет вызовы API на другом сервере. Для этого API требуется авторизация Oauth1.

Меня беспокоит то, что учетные данные OAuth1 идеально видны в файле dist/main.js, и, очевидно, я хочу скрыть эту информацию.

Сначала я подумал о кодировании учетных данных любым методом кодирования, а затем декодировал их перед выполнением вызова API. Но это решение неэффективно, поскольку любой код интерфейсного приложения доступен, и метод кодирования / декодирования не является исключением.

Я также думал о хранении учетных данных в базе данных на стороне интерфейсного сервера, к которой непосредственно обращается приложение Angular, но мне интересно, не слишком ли это «слишком много» для моих нужд.

В настоящее время учетные данные являются атрибутами вспомогательного класса:

export class OAuth1Authorization implements IAuthorization {
    private token = {
        consumerKey: '...',
        consumerSecret: '...',
        accessToken: '...',
        tokenSecret: '...'
    };
    private signatureMethod = 'HMAC-SHA1';
    private version = '1.0';
    private nonce;
    // ...
}

И последнее слово. Я хочу пояснить, что в моем случае использования не хранит токен, возвращенный удаленным сервером, например, после аутентификации по имени пользователя / паролю.

Мои потребности на самом деле хранить в защищенном виде (например, чтобы информация о соединении не была доступна в открытом виде!) 4 токена, которые должны быть известны заранее, как на входе, так и на входе. задняя сторона, которая не изменится некоторое время.

1 Ответ

2 голосов
/ 01 апреля 2019

К сожалению, OAuth1 не был разработан для современных приложений JS: секрет необходим для аутентификации, и, как вы заметили, не существует полностью пуленепробиваемого способа хранить его на стороне клиента.

Независимо от того, где вы его скрываете, как вы его кодируете, в какой-то момент оно будет декодировано вашим приложением и может быть легко получено с помощью отладчика.

Страница документации OAuth1 (https://oauth1.wp -api.org / docs / advanced / Web.html ) предлагает использовать минимальный прокси, который знает секреты и может выполнять аутентификацию, когда ваш веб-клиент отправляет ему несекретные параметры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...