Какой тип токена следует использовать для аутентификации на основе аутентификации внутреннего/частного доступа на основе токенов?

Я реализую webapp, который использует внутреннюю/частную поддержку api для обработки бэкэнд. Я планирую реализовать аутентификацию на основе токенов. Я читал о вещах об этом и натыкался на токены X-Auth и токены-носители.

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

Какой из них более подходит для моих нужд. Если нет, какой тип токена более уместен?

+1
источник поделиться
2 ответа

Я просто отвечу на свой вопрос, если это будет полезно для других.

Мы завершили процесс, используя заголовок Authentication с маркером-носителем. Это в основном токен, который вы выдаете потенциальным пользователям/клиентам.

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

Последовательные запросы к защищенным ресурсам затем будут использовать этот токен в заголовке Аутентификация.

Немного о нем: https://tools.ietf.org/html/rfc6750

Хорошее объяснение здесь:

Что означают токены-носители и токены в OAuth 2?

Надеюсь, поможет.

0
источник

Я думаю, что нет универсального ответа на этот вопрос. Прежде всего, я подозреваю, что вы можете путать заголовки с токенами, так что давайте начнем с этого момента. Это фрагмент от whireshark, обычный метод HTTP GET:

GET /22789/610/144208714.mp4?token2=1404763288_a4b48d3fc547294893b3b8d817ef1c59&aksessionid=690e90bada20cdc5 HTTP/1.1
Host: pdl.vimeocdn.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0
Accept: video/webm,video/ogg,video/*;q=0.9,application/ogg;q=0.7,audio/*;q=0.6,*/*;q=0.5
Accept-Language: en-US,en;q=0.5
DNT: 1
Range: bytes=427217-
Referer: http://vimeo.com/59253805
Cookie: aka_debug=cpcode:133150~clientip:87.81.132.48~ghostip:176.255.247.64~requestid:57d39e3~time:1404762182~ghostforwardip:~edgecache:cache-hit
Connection: keep-alive

Обратите внимание, как токен находится за вопросительным знаком в теле линии запроса GET. Что бы ни следует? называется параметром запроса, зависит ли вас от имени этого параметра "токен", "токен2" или "mysuperhash". В этом конкретном примере токен начинается с unix-подобной отметки времени, поэтому, если вы пойдете и попробуйте вставить этот запрос в свой браузер, доступ будет отклонен по истечении срока действия ссылки.

Каждая строка, следующая за первой, представляет собой в основном заголовок. Хотя есть некоторые обычные заголовки (например, "Хост" или "Время"), все зависит от вас, как назвать свой заголовок, который вы хотели бы использовать для своих конкретных целей.

На серверах nginx и Apache у вас есть переменные, которые всегда существуют, благодаря которым вы можете с легкостью получить доступ к параметрам и заголовкам. Кроме того, nginx позволяет настраивать условный доступ на основе токенов, чтобы вам даже не нужен программист (за исключением возможности получения правильных строк конфигурации), вы могли бы посмотреть: http://nginx.org/en/docs/http/ngx_http_secure_link_module.html

Это некое архитектурное решение, как построить этот токен. Вы можете защитить доступ в зависимости от времени, всего URI, IP-адреса клиента и так далее. Обычно это сложнее, чем кажется, поскольку вам нужно будет учесть множество возможностей в сетях доступа, которые могут быть у авторизованного пользователя. В случае nginx вы ограничены хешем md-5. Это старая-хорошая процедура, но она считается скомпрометированной, поэтому, если вы хотите получить лучшую защиту, вы можете рассмотреть sha-1 в своей собственной реализации (библиотеки доступны в пакете openssh).

-1
источник

Посмотрите другие вопросы по меткам или Задайте вопрос