Метод REST для доступа к пользовательскому интерфейсу и API
Это вопрос дизайна REST, не относящийся ни к одному языку программирования. Я создаю бэкэнд приложения, доступ к которому осуществляется через REST API. Я хотел бы использовать те же API-интерфейсы как для интерфейса, так и для API-интерфейса. Я пытаюсь найти лучший способ аутентификации пользователей, чтобы я мог повторно использовать те же методы.
Мой текущий мышление аутентификации выглядит следующим образом:
пользователей API
Эти пользователи получают идентификатор GUID пользователя и предварительный общий симметричный ключ. На каждом запросе API они включают в себя дополнительные заголовки или параметры запроса, которые содержат:
- Их идентификатор GUID
- Маркер безопасности, который содержит пользовательский идентификатор GUID, текущую метку времени и другой графический интерфейс (маркер GUID) сцепляются вместе и зашифрованы с использованием общий ключ
После получения запроса сервер просматривает заявленный идентификатор GUID, извлекает общий ключ, пытается расшифровать и проверить токен.
UI Пользователи
Эти пользователи будут сделать запрос входа в систему, снабжая человека учетные данные (идентификатор пользователя/пароль). После аутентификации сеанс устанавливается с помощью файлов cookie, а дальнейшие вызовы REST обеспечены на основе этого сеанса.
Проблема
Что это лучший способ, чтобы написать одну REST конечную точку, которая крепит в обоих направлениях: доступ к API и доступ к UI чисто, не слишком много дублирования? Я ищу сделать эквивалент следующего, но, возможно, более аккуратно:
@app.route('/')
def hello():
user = None
if session:
user = get_authenticated_user()
else:
user = process_auth_headers()
# Do something with user
Я ищу код сервера в термосе, но я уверен, что решение будет применяться, как легко любым REST на основе Сервер- боковой каркас.
С нетерпением жду некоторых идей сообщества.
Спасибо.
Спасибо CargoMeister. Можете ли вы дать мне пример метода REST на сервере, который обрабатывает как запросы сеанса без сеанса, так и запрос пользовательского интерфейса, поддерживающий сеанс? – Raj
Ну, без сеанса - проблема. Мы разрабатываем для мобильных и веб-приложений, а на мобильных устройствах существуют модули запросов HTTP, которые работают точно так же, как браузер. Итак, это доступно вам? – CargoMeister
См. Мое редактирование в разделе «Проблема» моего сообщения. – Raj