Szóval a cím azt jelenti, hogy hogyan tudod a meglevő Nextcloud szerveredet OpenID providerként használni, hogy az pl. a saját szervereden hostolt többi dologba bejelentkezéshez biztosítsa a hitelesítést.
Egyre jobban zavart, hogy a home szerveren a távoli elérést biztosító dolgok csak egy .htaccess/.htpasswd authentikációval vannak védve. Ehelyett valami kevéssé macerás, de biztonságosabb dolgot akartam, ami viszont helyben fut. Ilyen .htpasswd helyett .dbm, az nem volt szimpatikus, de leesett, hogy ugyanazon a szerveren fut egy Nextcloud is, amin van hitelesítés... és bingó, létezik Nextcloud modul, ami OpenID providerként működik.
Az OpenID egy elég régóta létező, nyílt hitelesítési protokoll, ami elég széleskörűen elterjedt, és elég könnyen használható. Nem is hiszem, hogy sokat kéne írni róla, alapvetően tényleg annyi, hogy a providertől a relying party ("kliens") lekérheti, hogy az adott azonosítójú user szerinte jogosult-e bejelentkezni. (Azaz, a usernév és jelszó érvényes, és joga is van.)
Az itt bemutatott beállítás csak arra szorítkozik, hogy adott Apache2 webszerveren egy könyvtárhoz korlátozza a hozzáférést a Nextcloud OICD app segítségével, azaz ha a Nextcloud-on van jogod bejelentkezni, akkor a könyvtárhoz is lesz (minimális kattintgatással lehet olyat is, hogy csak bizonyos usereknek legyen). Ehhez szükség lesz egy mod_auth_openidc Apache2 modulra is. Sajnos ennek a dokumentációja elég felületes, ezért is tartom érdemesnek leírni, hogy nálam hogyan működik.
Fontos, hogy a Nextcloud-on működnie kell a .well-known címek feloldásának. Na ez is elvitt pár délutánt
Az appot az Alkalmazások között a Biztonság kategóriában lehet telepíteni (OIDC Identity Provider) :
...aztán persze a Biztonság menüpontban találjuk :
Itt nagyon sok mindent nem kell állítgatni. Meg kell adni egy URL-t, ami a védett könyvtár belsejében levő, nem létező helyre mutat, erre fog majd visszairányítani a Nextcloud app. Az ügyfélazonosítót és a titkot a webszerveren kell majd használni. Itt határozhatóak meg csoportok is, hogy ki láthatja a könyvtár tartalmát.
A webszerveren fel kell telepíteni, és engedélyezni a mod_auth_openidc Apache2 modult. Ennek a menete mondjuk attól függ, min fut a szerver, de Debianon egy sima apt install libapache2-mod-auth-openidc
, és a2enmod mod-auth-openidc
.
A webszerver konfigja (azaz annak vonatkozó részei) valami ilyesmi :
Ezt a Listen elé érdemes tenni, a vhost konfigon kívülre (mondjuk megeszi benne is, ezt a kommunikáció során fogja használni) :OIDCCryptoPassphrase random_jo_hosszu_jelszo
Aztán a VirtualHost konfigjába :
#meglepő módon betölteni a mod_auth_openidc-t
LoadModule auth_openidc_module modules/mod_auth_openidc.so
#megadni a szerveren az url-eket; a Nextcloud-ot, amin hitelesít - ezért muszáj a .well-known-nak működnie
OIDCProviderMetadataURL https://nextcloudserveraddress/.well-known/openid-configuration
#és amire a Nextcloud vissza fogja irányítani
OIDCRedirectURI https://serveraddress/vedettkonyvtar/atiranyitasi_cim
OIDCClientID ide jön az ügyfélazonosító
OIDCClientSecret ide jön a titok
#ezek így maradnak (a SSL validáció azért nem lenne rossz)
OIDCProviderTokenEndpointAuth client_secret_post
OIDCSSLValidateServer Off
OIDCRemoteUserClaim preferred_username
OIDCScope "openid profile email roles“
#szokásos documentroot
DocumentRoot /data/
<Directory "/data/">
AuthType openid-connect
Options +Indexes
Require valid-user
order deny,allow
allow from all
Options Indexes FollowSymLinks
AllowOverride AuthConfig
Require all granted
<RequireAll>
Require valid-user
</RequireAll>
</Directory>
#Nekem a /apps könyvtárban vannak a /data alatt a cuccok - a redirect URL ezen belülre mutasson
<Location /apps>
AuthType openid-connect
Require valid-user
</Location>
Nyilván vannak benne hibák, de kb. ezt kell beletenni egy amúgy működő VirtualHost konfigba, hogy az OpenID-s hitelesítés működjön egy Nextcloud-dal.
Nálam annyi bug van, hogy az első alkalommal, amikor egy gépen hitelesíteni akarok, a Nextcloud dob egy 404-es hibát (hiányzik pár karakter az URL-ből... ), de még egyszer behívva az URL-t, már rendben működik a hitelesítés. Előszür az volt a tipp, hogy a képernyőképen is látható módon két redirect URL maradt benne, de nem; a felsőt kiszedtem, és azután is ilyen. Szerintem ezt a fejlesztő hamarosan javítja
...a fenti post röpke egy hét hibakeresés története, kezdve a .well-known megoldásával...