The session key is a 32 bytes random string, all details are in:
https://github.com/gssapi/mod_auth_gssapi
You can also specify it inline but then it must be base64 encoded, e.g.
makepasswd --chars=32 | base64
And in the apache conf:
GssapiSessionKey key:<the base64 encoded key>
In this case there is no file, hence no file permissions to think about.
If your machine is a Samba domain member you can also use the default
/etc/krb5.keytab just do:
chgrp www-data /etc/krb5.keytab
To make it accessible for apache.
Do note that www-data is the group on Debian, other distros may use a
different group name.
If your machine is not a domain-member, it is a bit more work.
You create a machine account in samba and create the principal:
samba-tool computer create <hostname>
# Set encryption types on the account
net ads enctypes set <hostname> 28
# set a password on the computer account:
PW=$(makepasswd --chars=32 | iconv -f UTF-8 -t UTF-16LE | base64 -w 0)
echo "dn: <host DN>\nchangetype: modify\nreplace:
unicodePwd\nunicodePwd::${PW}" | ldbmodify -H /var/lib/samba/private/sam.ldb
PRINCIPAL="http/<host fqdn>"
samba-tool spn add ${PRINCIPAL} <hostname> -H /var/lib/samba/private/sam.ldb
samba-tool domain exportkeytab -d 8 --principal=${PRINCIPAL}
<keytab_filename>
Now copy the keytab filename to the target host and provide access to
apache with:
chgrp www-data /etc/krb5.keytab
Done.
On 22-10-2022 15:20, mich ([email protected]) wrote:
Hello Kees
Thanks for the approach.
A tu tutorial more detailed, especially for the creation of keys
gssapi_session.key, apache.keytab is I do not use LDAP to identify me
during user connections, I use mysql.
With the solution you asked for, Kerberos is used for authentication,
not Mysql nor LDAP.
Samba4 provides MS-AD functionality, which is a.o. Kerberos + LDAP. In
the example below LDAP is used for authorization on top of the
authentication provided by Kerberos (to get access a user must be member
of a certain group, the "users_with_sogo_access" group).
Sogo still requires a database to store the user profile.
- Kees
Michel
*De : *<[email protected]> au nom de "[email protected]" <[email protected]>
*Répondre à : *"[email protected]" <[email protected]>
*Date : *vendredi 21 octobre 2022 à 11:43
*À : *"[email protected]" <[email protected]>
*Objet : *Re: [SOGo] kerberos sogo
You can let your webserver do the authentication, there it can do
krb5/gssapi authentication.
In sogo.conf st:
SOGoTrustProxyAuthentication = YES;
In Apache conf put something like:
<Location /SOGo>
AuthName "Login"
AuthType GSSAPI
GssapiSSLonly On
GssapiLocalName On
GssapiUseSessions On
GssapiSessionKey file:/var/lib/apache2/secrets/gssapi_session.key
<file:///var/lib/apache2/secrets/gssapi_session.key>
GssapiCredStore keytab:/etc/keytab/apache.keytab
GssapiDelegCcacheDir /run/apache2/krb5
GssapiBasicAuth on
GssapiAllowedMech krb5
GssapiBasicAuthMech krb5
Session On
SessionCookieName gssapi_session path=/private;httponly;secure;
Require valid-user
SetEnv proxy-nokeepalive 1
RewriteEngine On
RewriteRule .* - [E=SOGO_REMOTE_USER:%{REMOTE_USER}]
</Location>
If you also want authorization with ldap group-membership then that
can simply be added to the Apache config. Replace "Require valid-user"
with:
AuthLDAPURL "ldap://dc1.example.com
dc2.example.com/DC=example,DC=com?sAMAccountName?sub?(objectClass=user)"
<ldap://dc1.example.comdc2.example.com/DC=example,DC=com?sAMAccountName?sub?(objectClass=user)>
AuthLDAPRemoteUserAttribute sAMAccountName
<RequireAll>
Require valid-user
Require ldap-attribute userAccountControl="512"
Require ldap-filter
memberof:1.2.840.113556.1.4.1941:=CN=<MY-AUTHORIZATION-GROUP>,OU=<AUTHORIZATION-GROUPS>,DC=example,DC=com
</RequireAll>
This example is for Samba4 (or AD).
There is one side-effect of webserver authentication: the user's
password is not available in Sogo. This means that you must have
password-less login from Sogo to imap and smtp/submission.
For example run Sogo on the same machine as Dovecot and add this to
the dovecot config:
passdb {
args = nopassword=y allow_nets=127.0.0.1/32
driver = static
}
- Kees
On 21-10-2022 11:04, Christian Mack ([email protected])
wrote:
Hello
SOGo itself does not know about Kerberos.
But you can use its SAML interface in order to use it.
For that to work you have to setup an "Identity Provider" which
delivers Kerberos Tickets and a "Service Provider" for SOGo which
handles authentication for it.
Also your mail servers (IMAP + SMTP) have to either use kerberos
for authentication, or you have to allow not authenticated access
from the SOGo server.
SAML settings are documented in the Installation Documentation of
SOGo, but how to set up Identity and Service Providers is not.
You will need additional expertise for that.
How to enable and use Kerberos authentication with your mail
server, you have to check on its documentation.
Kind regards,
Christian Mack
Am 20.10.22 um 13:10 schrieb mich ([email protected]):
Hello
Is this solution "kerberos sogo" still actuality?
Is also if it works online and not locally is there any
documentation on the subject?
Michel