Возможные методы авторизации API в приложении Fintech / Banking - PullRequest
2 голосов
/ 27 октября 2019

Предположим, что мы реализовали RESTful API, предоставляющий финансовые и банковские услуги, и хотим предоставить его собственной команде разработчиков для реализации собственного мобильного клиентского приложения.

В этом смысле приложениеи, следовательно, API будет общедоступным и доступным, поэтому ЧТО получает к нему доступ, необходимо всячески авторизовать.

Первое решение, которое приходит на ум, - это предоставить client_id и client_secret и позволить разработчикам подписывать каждый запрос с использованием http-заголовка Authorization:

Authorization: APP client_id:base64(HMAC-SHA256(content, client_secret))

Пока сервер «знает» секрет клиента, авторизация использования API будет проходить гладко.

Что мне не нравится в этом:

  • каждый экземпляр приложения имеет одинаковый client_secret
  • client_secret безвозвратно
  • можетбыть легко раскрытым через исходный код приложения, даже будучи запутанным
  • в целом, возможность получения запросов из неизвестных источников

С другой стороны, я не хочу связываться с пользовательским опытом, с перенаправлениями и дополнительными запросами входа в систему, такими как OAuth и т. д.

Какие существуют другие методы авторизации для приложений такого типа? По какому пути авторизации следуют известные финтех / банковские компании?

1 Ответ

1 голос
/ 27 октября 2019

Не аутентифицируйте приложение, аутентифицируйте пользователя или объект, используя его.

Конечные точки, такие как «регистрация», которые не нуждаются в аутентификации, ну, в общем, не нуждаются в аутентификации. Вы также можете регулировать доступ независимо от аутентификации, в зависимости от сетей, из которых поступает трафик и т. Д. Обычно это делается в инфраструктуре, для этого не требуется код.

Как правило, изс точки зрения безопасности, опубликованные клиенты должны рассматриваться как контролируемые пользователем. Т.е. данные, которые они генерируют, должны рассматриваться как полностью контролируемые пользователем, даже если они подписаны, запутаны или что-то в этом роде.

До сих пор вы не упомянули ни одного варианта использования с точки зрения бэкэнда, где происходит аутентификацияклиентское программное обеспечение каким-то образом добавило бы ценность.

Я действительно работал над банковским бэкэндом, доступ к которому осуществлялся через приложение и веб-интерфейс (и несколько администраторов). Нам было все равно, какой пользователь использует бэкэнд, мы только аутентифицировали пользователя. Вещи, которые не нуждались в аутентификации (списки стран, адреса / распознаватели iban и т. Д.), Можно было использовать без таковой. Я даже не знаю, был ли доступ ограничен или контролировался во время работы, это не было нашей работой.

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