2015-06-29 2 views
0

В настоящее время я создаю свой собственный REST API. API предоставляет данные, которые не должны быть доступны для всех, поэтому я думал об обеспечении его приложением Token, которое вы должны отправлять при выполнении API-вызовов.Аутентификация API REST | AppID + AppSecret

Сначала я подумал об использовании OAuth2, но я только нашел, как использовать его так, как он используется, например. API Facebook (всплывающее окно, запрашивающее разрешение пользователя .....).

Это не то, что я хочу, поэтому я разработал свой собственный механизм auth. У меня есть список «приложений», которым разрешено использовать API. У каждого приложения есть AppID, чтобы идентифицировать его и AppSecret. Теперь аутентификации работает следующим образом:

  1. Клиент называет /auth/requestToken?auth_appId=[AppID]
  2. Если AppID действует клиент получает обратно requestToken
  3. Теперь клиент добавляет AppSecret к requestToken и хэши Результирующая строка
  4. Клиентские вызовы /auth/accessToken?auth_requestToken=[requestToken]&auth_requestAccessToken=[hash]
  5. Если hash действителен для отправки requestToken API возвращает accessToken, действительный 2 часа
  6. API вызовы могут быть сделаны путем добавления accessToken в качестве параметра GET

Теперь мои вопросы:

  • Есть ли что-то вроде стандарта для аутентификации клиента, как это?
  • Есть ли лучший способ сделать это?
  • Любые улучшения, которые вы предлагаете?

ответ

0

Есть ли что-то вроде стандарта для аутентификации клиента, подобного этому?

Да, ваш метод очень похож на OAuth 2, как вы можете видеть на этой схеме here. Различия между вашим решением и OAuth2 примерно система входа в систему.

Любые улучшения, которые вы предлагаете?

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

Есть ли лучший подход для этого?

Используйте OAuth2, это стандарт, и вы можете создать свой собственный OAuth2 довольно просто, и в Интернете есть много учебников.

Здесь на простом примере: creating-a-php-oauth-server

Я надеюсь, что мой основной ответ поможет :)

+0

Мой API просто разбирает HTML страницы и предоставляет контент через более дружественный пользовательский интерфейс JSon. Нет пользователей. У меня только клиентские приложения (iOS, Android, WP, возможно, WebApp), которые отображают данные. Для приложения я должен использовать другую систему авторизации, потому что клиент хочет интегрироваться в свою существующую систему. Так что все дело в том, чтобы конечные точки API обрабатывали только запросы из моих приложений :) – iMoritz

Смежные вопросы