Пользовательская аутентификация для клиента REST

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

Это нормально, если мы создадим собственный HTTP-сервер с нашим собственным модулем перезаписи наших модулей. Если мы хотим использовать уже созданный REST API, это единственный вариант, по сути, создать оболочку вокруг каждого из модулей XQuery, которые отправляются из модуля перезаписи REST, чтобы вызвать поток xdmp: login перед выполнением остальных. рабочего процесса REST api? Я не видел никакого способа с расширенной конфигурацией перезаписчика HTTP запускать произвольный код XQuery перед потоком отправки.

Это осуществимая идея или просто плохая идея?


person TJ Tang    schedule 22.02.2016    source источник


Ответы (2)


Лучшая практика с REST API - использовать средний уровень. Предоставление REST API напрямую вашим конечным пользователям аналогично тому, как делать это с подключением ODBC - что вы обычно не делаете.

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

person Dave Cassel    schedule 22.02.2016

Вы можете изменить готовые конечные точки REST API для выполнения xdmp: login, но, конечно, это создает сложности при выполнении обновления и при развертывании приложения. Это действительно наихудший сценарий.

Можете ли вы сопоставить всех своих пользователей с гораздо меньшим набором пользователей машинного обучения, возможно, порядка десятков? Затем средний уровень может делать что-то похожее на xdmp: login - он может просматривать профиль пользователя и определять, с каким пользователем ML подключиться к ML. Это не так гибко, как xdmp: login, который позволяет вам выбирать любые роли, которые вы хотите, без создания пользователя в качестве держателя для них, но это может помочь.

person rjrudin    schedule 29.02.2016
comment
Спасибо. Мы выбираем маршрут xdmp: login, потому что мы не можем сопоставить пользователей с меньшим набором пользователей ML. И мы хотим, чтобы он был гибким. Спасибо за предложение. Я предполагаю, что нет ничего, что мы могли бы зацепить до вызова перезаписчика? - person TJ Tang; 01.03.2016