Как связать учетную запись пользователя в базе данных FreeIPA с учетной записью пользователя в базе данных веб-приложения

Моя компания решила использовать FreeIPA для того, чтобы сделать доступным Single Sign On особенность для наших сотрудников. Я совсем не знаком с Kerberos/LDAP и похоже, потому что я никогда не использовал эти технологии раньше.

У нас 70 пользователей - у них есть машины с ОС Windows, и SSO следует использовать для нескольких Python (Django) веб-приложений, веб-сайтов WordPress и, возможно, для Roundcube веб-почта и OpenVPN доступ. Они вообще не имеют доступа к веб-серверам, поэтому учетные записи SSH не важны для этой истории.

наш python В веб-приложении есть таблица базы данных с данными пользователей, которая связана с некоторыми другими таблицами, и для нас очень важно, чтобы каждый пользователь был добавлен в эти таблицы (через интерфейс нашего веб-приложения), потому что в противном случае наше приложение не будет работать должным образом. Имея это в виду, я хотел бы знать, есть ли способ как-то ссылаться на пользователя из FreeIPA's базы данных для наших веб-приложений и баз данных WordPress, пример ниже:

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

Мы уже определили пользовательские привилегии в каждом веб-приложении в отдельности, и все работает отлично, поэтому главная цель - просто сделать доступным SSO для наших пользователей. Я не хочу беспокоиться о группах пользователей и привилегиях в FreeIPA система, смогу ли я избежать этого? Когда пользователь получает Kerberos тикет я хочу, чтобы эти веб-приложения распознали его / ее учетную запись, которая ссылается на соответствующую учетную запись пользователя в FreeIPA база данных, и поэтому имеет определенные привилегии в этих приложениях.

В этом сценарии очевидно, что мне придется добавлять каждого нового пользователя два раза - в FreeIPA база данных и в базе данных веб-приложения, но это не проблема, я просто хочу подключить / ссылаться на эти учетные записи пользователей.

РЕДАКТИРОВАТЬ к ответу Михаэля Стредера:

Как я вижу, мне нужно было бы добавить каждого существующего пользователя вручную во FreeIPA с помощью команды --uid, потому что FreeIPA автоматически предоставляет эти атрибуты каждому пользователю. Я согласен, я бы не использовал имена пользователей для UID, а только целые числа. Итак, я представлял себе, как это сделать - мне нужно было бы связать номер uid каждого пользователя со столбцом ID таблицы пользователя БД приложения. Допустим, если у Джона есть UID #7, он также должен иметь ID # 7 в таблице WordPress wp_users, и это выглядит хорошо для меня. Я думаю, что я мог бы легко управлять этим в моем собственном приложении Python, но я не уверен, как управлять этим в WordPress, есть ли какой-нибудь плагин, который можно использовать для таких вещей? Я нашел AuthLDAP, но я не уверен, что это правильный способ сделать это? заранее спасибо

1 ответ

Решение

Обычный способ состоит в том, чтобы иметь уникальные и постоянные имена пользователей (String), которые обычно хранятся в атрибуте uid во FreeIPA (или на других серверах LDAP), и использовать это в качестве ключа в таблице БД вашего приложения.

Обратите внимание, что uid не содержит POSIX-UID (Integer), который фактически хранится в атрибуте uidNumber.

Я настоятельно рекомендую не выводить имена пользователей, хранящиеся в uid, из личных имен, потому что они часто меняются. Также вы никогда не должны повторно использовать имена пользователей.

FreeIPA также имеет атрибут nsUniqueId, который содержит UUID, сгенерированный во время создания записи. Он не будет изменен в течение срока действия записи. Если вы хотите использовать это, вы должны позаботиться о том, чтобы записи не были удалены / заново созданы внешними системами управления удостоверениями. (Другие серверы LDAP используют стандартный атрибут entryUUID).

Другие вопросы по тегам