У меня есть установка сервера LAMP с использованием Apache2, mod_php и mod_authnz_ldap для аутентификации в Active Directory. Здесь размещается легкое приложение php, в котором пользователи вводят данные и манипулируют ими. Доступ основан на директивах 'require ldap-group ...', и несколько групп допустимы.
Теперь нам нужно добавить доступ для дополнительной группы, но их доступ должен быть «только для чтения». В этом случае нам необходимо определить на уровне приложения, в какой группе находится пользователь, и отключить определенные функции на основе членства в этой группе. Это приложение php, поэтому идеально подходит то, что php может легко получить.
Имя группы AD, которое apache использовал для предоставления доступа, может быть легко предоставлено приложению, подобно тому, как $_SERVER['AUTHENTICATE_SAMACCOUNTNAME']
является.
Мы уже выполняем аутентификацию через apache, поэтому это создает ненужное дублирование, дополнительную работу по реализации и дополнительные расходы на обслуживание (еще один URL привязки для изменения). Возможно, но это больно.
Опять же, требует, чтобы мы отклонились от наших стандартов только для этого хоста и поддерживали их в будущем. Возможна, но боль немного меньше. Однако добавление других директив ldap или изменений vhost было бы тривиальным делом.
На самом деле это кажется лучшей идеей, однако для этого потребуется опубликовать новый URL-адрес для новой группы, что вызывает неудобства у пользователей и может быть полностью отклонено.
Так много дополнительных накладных расходов, что в данном случае это совершенно нецелесообразно. (И формально все равно не ответил бы на вопрос).
Вы должны иметь возможность просто использовать SetEnv в apache: https://httpd.apache.org/docs/2.2/env.html
Затем в PHP используйте getenv () или массив $ _SERVER [].
Когда я использую следующую строку с mod_authz_ldap, она передает переменные uid и memberof в PHP:
AuthLDAPURL "ldaps://<server>/cn=users,cn=accounts,dc=ipa,dc=domain,dc=tld?uid,memberof?one?"