Mainos / Advertisement:

LemonLDAP::NG

Kohteesta Taisto
Versio hetkellä 14. heinäkuuta 2017 kello 17.24 – tehnyt Minh (keskustelu | muokkaukset) (→‎Todennusmoduulit)
Siirry navigaatioon Siirry hakuun

LemonLDAP::NG on Single Sign On (SSO) sovellus ja se on avointa lähdekoodia. Tätä käytetään hallinnoimaan kirjautumisia verkkosivuilla esimerkiksi keskitetysti. Voit yhdistää tähän eri salasana tietokantoja, esimerkiksi LDAP.

Tutustu täältä: https://lemonldap-ng.org/

Asennus

Asenna dependerit

 sudo apt install libmouse-perl libnet-ldap-perl libcache-cache-perl libdbi-perl perl-modules libwww-perl libcache-cache-perl libxml-simple-perl libsoap-lite-perl libhtml-template-perl libregexp-assemble-perl libregexp-common-perl libjs-jquery libxml-libxml-perl libcrypt-rijndael-perl libio-string-perl libxml-libxslt-perl libconfig-inifiles-perl libjson-perl libstring-random-perl libemail-date-format-perl libmime-lite-perl libcrypt-openssl-rsa-perl libdigest-hmac-perl libdigest-sha-perl libclone-perl libauthen-sasl-perl libnet-cidr-lite-perl libcrypt-openssl-x509-perl libauthcas-perl libtest-pod-perl libtest-mockobject-perl libauthen-captcha-perl libnet-openid-consumer-perl libnet-openid-server-perl libunicode-string-perl libconvert-pem-perl libmoose-perl libplack-perl libauthen-captcha-perl liblasso-perl

Lisää APT-source.listiin

 sudo nano /etc/apt/sources.list.d/lemonldap-ng.list

tiedostoon

# LemonLDAP::NG repository
deb     https://lemonldap-ng.org/deb stable main
deb-src https://lemonldap-ng.org/deb stable main

Lataa GPG allekirjoitus avain ja asenna se

 wget https://lemonldap-ng.org/_media/rpm-gpg-key-ow2
 sudo apt-key add rpm-gpg-key-ow2

Asenna lemonldap-ng paketti

 sudo apt update & sudo apt install lemonldap-ng

Jos käytät Nginx asenna lisäksi

 sudo apt install lemonldap-ng-fastcgi-server

Muokkaa oletusdomain omaksi ow2.orgiksi. muuta tämä omaksi domainiksi. Ja aja sitten tämä komentorivillä. Tämä päivittää kaikki konfiguraatioihin oma domain nimesi.

 sudo sed -i 's/example\.com/ow2.org/g' /etc/lemonldap-ng/* /var/lib/lemonldap-ng/conf/lmConf-1.js /var/lib/lemonldap-ng/test/index.pl

Konfiguroi hosts

 echo "127.0.0.1 reload.example.com" >> /etc/hosts

Konfiguroi nimipalvelimellesi auth ja manager alidomainit osoittamaan LemonLDAP palvelinta.

Konfigurointi

Nginx

Asensithan lemonldap-ng-fastcgi-server paketin?

Paketti automaattisesti luo symlinkit sites-available hakemistoon Nginxään mutta otaaksesi käyttöön tee toinen symlinkki sites-enabled hakemistoon

sudo ln -s /etc/nginx/sites-available/handler-nginx.conf /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/manager-nginx.conf /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/portal-nginx.conf /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/test-nginx.conf /etc/nginx/sites-enabled/

Ja lataa Nginx konfiguraatio uudelleen

 sudo service nginx reload

Konfigurointi Backend

Oletuksena LemonLDAP tallentaa konfiguraatiot tiedostoon, JSON muodossa. Jos olet tekemässä Multi-Node instanssia, suosittelen siirtämään tietokannan esimerkiksi MySQL:ään.

  • Luo tietokanta lemonldap
  • Tietokantaan käyttöoikeus käyttäjälle lemonldap.

Luo tietokantaan taulu lmconfig:

CREATE TABLE lmConfig (
    cfgNum INT(11) NOT NULL,
    FIELD VARCHAR(255) NOT NULL DEFAULT '',
    VALUE longblob,
    PRIMARY KEY (cfgNum,FIELD)
    );

Luo lemonldap-ng.ini tiedostosta kopio

 sudo cp /etc/lemonldap-ng/lemonldap-ng.ini /tmp/lemonldap-ng.ini

Avaa tämä kopio /etc/lemonldap-ng/lemonldap-ng.ini.new ja konfiguroi sinne tietokantapalvelimesi asetukset.

[configuration]
type = RDBI
dbiChain    = DBI:mysql:database=lemonldap-ng;host=1.2.3.4
dbiUser     = lemonldap
dbiPassword = password
; optional
dbiTable    = mytablename

Kommentoi pois "type=File" konfiguraatiosta. Tallenna ja sulje.

Aja seuraava komento siirtäessä vanhan konfiguraation uudelle backendille.

 sudo /usr/share/lemonldap-ng/bin/convertConfig --current /etc/lemonldap-ng/lemonldap-ng.ini /tmp/lemonldap-ng.ini

Sitten siirrä varmuuskopioi vanha konfigurointi tiedosto

sudo mv /etc/lemonldap-ng/lemonldap-ng.ini  /etc/lemonldap-ng/lemonldap-ng.ini.bak

ja korvaa uudella

sudo mv /tmp/lemonldap-ng.ini /etc/lemonldap-ng/lemonldap-ng.ini

Käynnistä Apache2 / lemonldap-ng-fastcgi-server uudelleen

 sudo service apache2 restart
 sudo service lemonldap-ng-fastcgi-server restart

Todennusmoduulit

Todennusmoduulien (eng. Authentication module) voit käyttää LemonLDAPia kirjautumaan esimerkiksi LDAPin, Googlen (OpenID Connect), Facebookin ja Twitterin kautta.

Lisää todennusmoduulit managerista:

  • General Parameters -> Authentication parameters
  • Valitse Authenticatin module alta mitä moduulia haluat käyttää. Lisäksi konfiguroi Users ja Password moduulit.

Tuetut moduulit löytyvät dokuemntaaatiosta https://lemonldap-ng.org/documentation/latest/start#authentication_users_and_password_databases

Todennus Google-tilin avulla

Googlen tulee konfiguroida OpenID Connectin avulla.

  • Rekisteröidy ensin Google Developer käyttäjäksi täälä: https://console.developers.google.com/
  • Valitse API Manager alta Creditials. Luodaan uudet tilitiedot.
  • Valitse sitten Oauth Client ID.

LemonLDAP luo creditials api manager.png

Määritä sitten Client ID:lle:

  • Name: Demo Login
  • Authorized Javacript Origins: Määritä tähän isäntänimet joilla saa kirjautua.
  • Authorized redirect URIs: Määritä tähän osoite mihin uudelleenohjataan takaisin. Esimerkiksi https://auth.example.org/?openidcallback=1

Palaa nyt LemonLDAP Manageiin. Luo uusi OpenID Connect providers ja nimeä se esimerkiksi "google":ksi.

Tallenna ja testaa.

Webhallinta (manager)

Siirry manageriin jatkaaksesi konfigurointia.

Kirjaudu oletustunnuksella dwho ja salasanalla dwho

Konfiguroi SSO:n eväste, verkkotunnus ja portaalin osoite

  • Portal URL on verkko-osoite jonne ohjataan kaikki todennuspyynöt. Se konfiguroidaan General Parameters -> Portal -> URL alta.
  • Evästeet ovat todella tärkeitä ja sielä pitää olla oikea verkkotunnus käytössä. Voit sallia evästeiden käytön useamman verkkotunnuksen kanssa. Asetukset löytyy General Parameters - Cookies alta.

SAML käyttöön

Otat käyttöön Managerista: General parameters -> SAML alta.

LemonLDAP SAML enable 1.PNG

Istunnot MySQL/MariaDB:hen

Oletuksena LemonLDAP tallentaa istunnot tiedostoon. Tämä tekee vaikeammaksi toteuttaa HA-ratkaisua jossa olisi useita LemonLDAP istansseja. Kun tallennat istunnot tietokantaan kuten MySQL, voit synkronoida nämä istunnot helpommin palvelimiesi välillä.

Luo lemonldap tietokantaan taulu sessions

CREATE TABLE sessions (
    id CHAR(32) NOT NULL PRIMARY KEY,
    a_session text
    );
CREATE TABLE psessions (
    id CHAR(32) NOT NULL PRIMARY KEY,
    a_session text
    );

Tietokantaan luo käyttäjätili jolla kaikki oikeudet tähän tietokantaan.

Sitten Managerissa General Parameters -> Sessions -> Sessions Storage määritä sinne seuraavat asetukset MySQLää varten. DataSource ja Lock DataSource voit käyttää samoja tunnuksia ja salasanoja.

DataSource dbi:mysql:dbname=lemonldap;host=127.0.0.1
UserName lemonldap
Password lemonldap_password
TableName sessions
LockDataSource dbi:mysql:dbname=lemonldap;host=127.0.0.1
LockUserName lemonldap
LockPassword lemonldap_password

Muuta sitten Apache::Session modules arvoksi: Apache::Session::MySQL ja tallenna konfiguraatio. Jos sinulla ei ole Apache::Session::MySQL asennettuna, asenna se cpanin avulla.

 sudo cpan install Session::MySQL

Teimme lisäksi Persistent sessions konfiguraation taulun, määritä vastaavanlainen tietokanta-asetukset manageriin.

Portaalin kustomointi

Portaalia voi kustomoida HTML / CSS / JS:llä suoraan /usr/share/lemonldap-ng/portal-skins hakemistossa.

cd /usr/share/lemonldap-ng/portal-skins/
cd myskin/
cp -a ../bootstrap/fonts/ .
cp -a ../bootstrap/js/ .
cp -a ../bootstrap/css/ .
mkdir images

SSO käyttöön eri palveluissa

Tässä ohjeita miten palvelut saadaan kirjautumaan LemonLDAPin SSO:n kautta.

Mene Manageriin _-> OpenID Connect Relaying parties ja luo uusi OpenID Relaying party. Nimeä se haluamallasi tavalla.

Options tabin alta:

  • Auhthentication
    • Client ID - Asiakkaan tunnus, generoi tunnus jota käytät sovelluksessa.
    • Client secret: Asiakkaan tunnuksen salausavain, jota käytetään sovelluksessa. Generoi oma.
  • Display
    • Display name: Sovelluksen nimi
    • Logo: Sovelluksen kuvake
  • Redirection addresses: Uudelleenohjaus osoitteet, erotetaan välilyönnillä. Eli nämä ovat redirect_uri parametrissä.

Gitlab

Avaa /etc/gitlab/gitlab.rb konfigurointi tiedosto

Konfiguroi se seuraavanlaiseksi

gitlab_rails['omniauth_enabled'] = true
gitlab_rails['omniauth_allow_single_sign_on'] = ['oauth2_generic']
gitlab_rails['omniauth_block_auto_created_users'] = false
gitlab_rails['omniauth_providers'] = [
  {
    'name' => 'oauth2_generic',
    'app_id' => 'random_key', #Change this to own app id
    'app_secret' => 'random_key', #Change this to own app key
    'args' => {
        "scope" => "openid",
      client_options: {
        'site' => 'https://auth.example.org', # including port if necessary
        'authorize_url' => '/oauth2/authorize',
        'token_url' => '/oauth2/token',
        'user_info_url' => '/oauth2/userinfo',
      },
      user_response_structure: {
        root_path: ['data', 'user'],
        attributes: { nickname: 'username', first_name: 'name', last_name: 'family_name', email: 'email' } 
      },
    }
  }
]

Sulje tiedosto ja aja seuraava komento lataaksesi konfiguraation uudelleen

 sudo gitlab-ctl reconfigure

Linkkejä:

https://gitlab.com/satorix/omniauth-oauth2-generic

Linkkejä

https://elatov.github.io/2014/02/lemonldap-ng-ldap-saml-google-apps/

Mainos / Advertisement: