Олицетворение пользователя с использованием Java и Active Directory - PullRequest
0 голосов
/ 30 октября 2018

Я занимаюсь разработкой приложения Java, которое использует Active Directory в качестве хранилища пользователей. Это доступ к AD с использованием UnboundID LDAP SDK. Первоначально я планировал использовать пул соединений, которые связывались бы с AD с использованием учетной записи службы и выдавали себя за пользователей по мере необходимости, не требуя повторного ввода имени пользователя и пароля. К сожалению, AD, кажется, не поддерживает Proxied Authorization Request Control (RFC 4370). Кажется, он также не поддерживает поле SASL authzId: «Кроме того, он не позволяет устанавливать идентификационные данные авторизации в соединении, которые отличаются от идентификационных данных аутентификации, используемых в этом соединении». от https://msdn.microsoft.com/en-us/library/cc223500.aspx

Есть ли способ заставить мое решение работать без замены AD другим каталогом?

Вариант использования: Мы используем Active Directory в качестве хранилища идентификаторов для наших пользователей. Когда пользователи входят в систему, мы проверяем их учетные данные по AD, выполняя привязку, за которой следует рабочий процесс OpenID для нашего провайдера авторизации. После этого пользователь считается авторизованным и авторизованным и выдавшим токен доступа. Все отлично, пока мы не доберемся до самообслуживания и делегированной управленческой части. Мы не хотим, чтобы пользователи видели то, что им не разрешено просматривать / изменять. Мы достигаем этого, управляя разрешениями в AD. То есть Администратор может разблокировать учетные записи. Обычный пользователь не может. Если мы используем служебную учетную запись для выполнения операций LDAP, мы теряем всю расширенную модель безопасности, которую предоставляет AD. Мы не можем поддерживать постоянное соединение для каждого вошедшего в систему пользователя, потому что число пользователей очень велико, и мы можем потенциально получить тысячи соединений. Мы хотели бы поддерживать пул соединений, аутентифицированных с помощью учетной записи службы, и выдавать себя за пользователей по мере необходимости. Самый простой способ добиться этого - использовать Proxy Authorization.

...