Должны ли ссылки содержать токен аутентификации в HateOAS?

Я использую Spring MVC и Spring HateOAS для создания спокойного JSON API без сохранения состояния.

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

http://some_host/api/foo/bar?token=abcd

API всегда отвечает в формате JSON, а ссылки генерируются через Spring HateOAS. Например :

{
    "label" : "foo",
    "links" : [
        "rel" : "self",
        "href" : "http://some_host/api/foo/bar/1234656"
    ]
}

Вопрос: Должен ли я добавить токен аутентификации в сгенерированный URL-адрес? (так что будет http://some_host/api/foo/bar/1234656?token=abcd)

Я не могу найти никаких советов или соглашений для этого.


person Magus    schedule 31.10.2013    source источник


Ответы (2)


Обычно маркеры аутентификации передаются через стандартные заголовки HTTP (например, заголовок авторизации в случае HTTP Basic или Digest). Другой распространенный — через файл cookie. В средах сервлетов это обычно файл cookie JSESSIONID.

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

person Jonathan W    schedule 02.11.2013
comment
На самом деле API может обрабатывать токен аутентификации несколькими способами. Мы можем обрабатывать токен в пользовательском токене HTTP, мы обрабатываем базовую аутентификацию HTTP и обрабатываем токен в строке запроса. - person Magus; 04.11.2013
comment
Я знаю, что он может обрабатывать токены в строке запроса, но, вероятно, не должен. Я хочу сказать, что вы, вероятно, не видите много советов по этому вопросу, потому что немногие люди делают это таким образом (вместо этого они используют заголовки). - person Jonathan W; 04.11.2013

Это старый вопрос, но ответ определенно нет.

http://some_host/api/foo/bar/1234656 должен быть универсальным идентификатором (URI) и местоположением (URL) для этого ресурса. Это единственный URL, на который вы можете положиться. Вы всегда можете получить ресурс, используя этот URL-адрес, но вы никогда не получите ресурс с http://some_host/api/foo/bar?token=abcd снова, потому что срок действия токена истекает.

Вызов URL-адреса с добавленным маркером — это одно, но он никогда не должен появляться в ссылке, потому что он не имеет ничего общего с ресурсом. Ответственность за отправку токена лежит на клиенте, а не на сервере.

person a better oliver    schedule 26.11.2015