Versiunea serverului: Apache/2.4.37 (Red Hat Enterprise Linux)
Apache este lansat ca container în clusterul Openshift.
Folosesc Apache ca proxy direct și invers pentru Kibana.
Cerința obligatorie este utilizarea Kerberos și aveți nevoie de un model pentru a diferenția accesul.
Am creat în elasticsearch utilizatori admin și vizualizatori.
În funcție de grupul LDAP, Apache trebuie să transmită fie un antet cu numele de utilizator și parola administratorului, fie un vizualizator.
Dar nu am cum să o pot obține.
<AuthnProviderAlias ldap ldap-access>
AuthLDAPURL "ldap://ldap.example.com:389/dc=example,dc=com?cn?sub?(objectClass=user)"
AuthLDAPBindDN "CN=ServiceAccount,OU=Users,DC=example,DC=com"
AuthLDAPBindPassword "password"
</AuthnProviderAlias>
<AuthzProviderAlias ldap-group ldap-group-viewer CN=viewer,OU=Groups,DC=example,DC=com>
AuthLDAPURL "ldap://ldap.example.com:389/dc=example,dc=com?cn?sub?(objectClass=user)"
AuthLDAPBindDN "CN=ServiceAccount,OU=Users,DC=example,DC=com"
AuthLDAPBindPassword "password""
</AuthzProviderAlias>
<AuthzProviderAlias ldap-group ldap-group-admin CN=admin,OU=Groups,DC=example,DC=com>
AuthLDAPURL "ldap://ldap.example.com:389/dc=example,dc=com?cn?sub?(objectClass=user)"
AuthLDAPBindDN "CN=ServiceAccount,OU=Users,DC=example,DC=com"
AuthLDAPBindPassword "password""
</AuthzProviderAlias>
<LocationMatch "/kibana">
AuthType GSSAPI
AuthName "Kerberos Auth"
GssapiSSLonly Off
GssapiBasicAuth On
GssapiAllowedMech krb5
GssapiSessionKey file:/tmp/session.key
GssapiCredStore keytab:/etc/httpd/krb5.keytab
GssapiCredStore ccache:FILE:/var/run/httpd/krb5ccache
GssapiDelegCcacheDir /var/run/httpd/clientcaches
GssapiImpersonate On
GssapiLocalName On
GssapiUseSessions On
Session On
SessionExpiryUpdateInterval 300
SessionInclude /
SessionCookieName gssapi_session path=/;httponly;secure;
BrowserMatch Windows gssapi-no-negotiate
LogLevel debug
AuthBasicProvider ldap-access
<RequireAll>
Require ldap-group-viewer
Require ldap-group-admin
</RequireAll>
ProxyPass http://kibana:5601/kibana
ProxyPassReverse http://kibana:5601/kibana
RequestHeader set Authorization "Basic dmlld2VyOnZpZXdlcg=="
</LocationMatch>
În această configurație, toți utilizatorii din grupuri se conectează cu aceeași autentificare, dar trebuie să partajez drepturile.
- Pentru spectatori - RequestHeader set Autorizare „Basic dmlld2VyOnZpZXdlcg=="
- Pentru administratori - RequestHeader set Authorization "Basic YWRtaW46YWRtaW4="
Am încercat să adaug un atribut la adresa URL LDAP și să folosesc o variabilă AUTHORIZATION_Viewer ca aici Apache: Cum să spun cu ce server LDAP a fost autentificat utilizatorul meu:
AuthLDAPURL „ldap://ldap.example.com:389/dc=example,dc=com?cn,Viewer?sub?(objectClass=user)”
Și apoi:
RequestHeader set Autorizare „Basic dmlld2VyOnZpZXdlcg==" env=AUTHENTICATE_Viewer
Dar în jurnalele Apache o astfel de variabilă nu apare deloc.
Am încercat și varianta cu blocul, dar fără succes.
Există vreo modalitate de a crea o aparență de model în Apache?