Cara menggunakan php idp

Digitalisasi Sistem Informasi Manajemen Dalam Penanganan IDP (Individual Development Plan) Di Pt Garudafood Putra Putri Jaya Bu.E2 Rancaekek

Fahmi Abdul Aziz (2017) | Tugas Akhir | -

Ringkasan

Individual Development Plan (IDP) merupakan rencana pengembangan kinerja karyawan sesuai dengan kebutuhan organisasi. Sistem informasi manajemen (SIM) sangat berpengaruh dalam penyebaran informasi tentang Individual development plan (IDP) supaya informasi dapat tersampaikan langsung kepada orang yang bersangkutan. Dalam penerapanya Sistem informasi manajemen (SIM) dalam penanganan Individual development plan (IDP) harus di dukung oleh teknologi berbasis computer. Hal ini dapat memberikan kemudahan dan ketepatan dalam mengatur informasi. Bila masih menggunakan cara manual akan menghambat dalam segi waktu dan keamanan file. Penanganan IDP di PT Garudafood Putra Putri Jaya masih menggunakan cara manual. Penggunaan komputer hanya digunakan sebatas untuk pengetikan pada form IDP saja. Hal ini membuat penanganan IDP ini memakan waktu yang sangat lama. Selain itu, keamanan file juga bergantung pada hard copy yang sangat rentan rusak ataupun hilang, untuk itu dibuat sebuah aplikasi IDP. Aplikasi berperan penting untuk memberikan kemudahan pemakain. Penanganan Sistem informasi manajemen (SIM) dalam Individual development plan (IDP) menjadikan pengerjaan lebih cepat dan keamanan dari data lebih terjamin. Dari itu aplikasi ini dibuat supaya memberikan kemudahan dalam penggunaan dan meminimalisasi kekurangan yang terdapat pada sistem yang telah digunakan di perusahaan Kata kunci : Sistem Informasi Manajemen, IDP, Individual Development Plan, aplikasi, proyek

Ringkasan Alternatif

Individual development plan (IDP) is an employee performance development plans according to the needs of the organization. Management information systems (MIS) are very influential in the dissemination of information about the Individual Development Plan (IDP) so that information can be delivered directly to the person concerned. Applicability in the management information system (MIS) in the handling of Individual development plan (IDP) must be supported by computer-based technology. It can provide convenience and accuracy in managing information. When still use manual way would hamper in terms of time and file security. Handling IDP PT Garudafood Putra Putri Jaya still use manual . The use of computers is used only limited to typing on IDP form only. This makes the handling of IDPs this takes a very long time . In addition, the security file also depend on a particularly vulnerable hard copy is damaged or lost , for it made an IDP application Application plays an important role to provide ease of usage. Handling Management information systems (MIS) in the Individual Development Plan (IDP) makes the work faster and more assured security of the data. From the application is made in order to provide ease of use and minimize the shortcomings inherent in the system that has been used in the company Kaywords: Management Information System IDP, Individual Development Plan, Application, project

Sumber

Enter a new URL to shorten

The bookmarklet

Add this to your bookmarks or drag it to your bookmarks bar to quickly access shortening functions.

Shorten

This bookmarklet takes the page URL and title and opens a new tab, where you can fill out a CAPTCHA. If you have selected text before using the bookmarklet, that will be used as the keyword.

Support for bookmarklets on mobile varies. For example, they work on Chrome for Android but you have to add and sync them from your desktop.

Daftar Isi

  1. Pengantar Single Sign On (SSO)
  2. Pengantar Federasi
  3. Instalasi Jagger
  4. Instalasi Identity Provider (IdP)
  5. Instalasi Service Provider (SP)
  6. Membangun Federasi
  7. Registrasi Identity Provider (IdP)
  8. Registrasi Service Provider (SP)
  9. Pengujian
  10. Integrasi Moodle sebagai Service Provider


Pengantar Single Sign On (SSO)


Single Sign On atau biasa kita sebut SSO merupakan salah satu teknologi login secara terpusat untuk beberapa sistem yang berbeda dalam suatu organisasi agar terintegrasi dengan user Account yang valid. 

Kelebihan SSO :

  • Pengguna tidak perlu mengingat banyak username dan password.
  • Kemudahan pertukaran data atribut pengguna
  • Tidak perlu membuat data pengguna yang sama di setiap aplikasi
  • Setiap pembuatan aplikasi tidak perlu menyediakan modul login tersendiri
  • Menghemat biaya untuk pemeliharaan password
  • User dapat login dengan menggunakan satu identitas ke beberapa sistem.
  • User cukup memasukkan satu kali username dan password untuk mengakses sistem.

Tantangan SSO :

  • Pentingnya kesadaran pengguna untuk menjaga data credential
  • Implementasikan sistem SSO kedalam sebuah aplikasi yang heterogen dan multiplatform
  • Titik Kegagalan Tunggal (Single point of failure), dapat diatasi dengan clustering pada IdP sebagai penyedia data identitas pengguna

Komponen - komponen SSO :

Identity Provider (IdP), bertanggung jawab untuk otentikasi user dan menyediakan informasi user ke SP. 

Service Provider (SP), bertanggung jawab untuk melindungi sumber daya online dan mengonsumsi informasi dari IdP.

Discovery Service (DS), membantu SP untuk menemukan IdP user.

Cara menggunakan php idp
Cara menggunakan php idp
Cara menggunakan php idp

Basic Interaction

Cara menggunakan php idp

  1. Pengguna melakukan akses ke layanan yang di proteksi dengan SSO.
  2. Service Provider akan melakukan persiapan request autentikasi dan mengirimkan data pengguna ke Identity Provider.
  3. Setelah proses pencocokan data pengguna pada Identity Provider maka dilanjutkan pada proses login. Jika login valid, maka Identity Provider akan memberikan sesi pengguna ke layanan Service Provider.
  4. Service Provider akan melakukan cek respon autentikasi pengguna yang didapatkan dari Identity Provider, yang mana hasil cek respon tersebut akan dibuat session.
  5. Session tersebut akan digunakan untuk validasi dalam mengakses layanan yang di proteksi dengan SSO.

Cara menggunakan php idp

Pengantar Federasi

Cara menggunakan php idp

Identity Federation merupakan kumpulan organisasi yang setuju untuk beroperasi di bawah satu kebijakan tertentu.

Installasi Jagger


Spesifikasi VM

  • Hardware
  • CPU 2 Core
  • Memory 2 GB
  • Operating System
  • Ubuntu 18.04

Requirements

Installation

  • Upgrade & Update OS
    # apt update -y && apt upgrade -y
  • Install Dependencies
    # apt install apache2 php mysql-server mysql-client libapache2-mod-php php-cli php-curl php-mysql php-memcached php-bcmath php-mbstring php-apcu php-gearman gearman php-dev gcc make autoconf libc-dev pkg-config libmcrypt-dev php-pear memcached libboost-all-dev gperf libevent-dev uuid-dev libcloog-ppl-dev python-setuptools openjdk-8-jdk unzip libgearman-dev python-pip -y

    # pecl install mcrypt-1.0.3

    # bash -c "echo extension=/usr/lib/php/20170718/mcrypt.so > /etc/php/7.2/cli/conf.d/mcrypt.ini"

    # bash -c "echo extension=/usr/lib/php/20170718/mcrypt.so > /etc/php/7.2/apache2/conf.d/mcrypt.ini"

    # php -i | grep "mcrypt"

  • Enable Modul Apache
    # a2enmod rewrite unique_id ssl

    # systemctl restart apache2

  • Instal Composer
    # curl -sS https://getcomposer.org/installer
    Cara menggunakan php idp
    | php

    # cp composer.phar /usr/local/bin/composer

  • Install Let's Encrypt
    # add-apt-repository ppa:certbot/certbot

    # apt install python-certbot-apache

    # certbot --apache -d sp<domain-anda>.uii.id


Konfigurasi Apache

  • Tambahkan konfigurasi di bawah ini pada file /etc/apache2/sites-available/000-default.conf
    # nano /etc/apache2/sites-available/000-default.conf

    DocumentRoot /opt/rr3
    ServerName sp-<domain-anda>.uii.id

  • Enable site pada file 000-default.conf
    # a2ensite 000-default.conf
  • Reload Apache
    # systemctl reload apache2
  • Pindah ke folder opt
    # cd /opt
  • Download Codeigniter
     # wget https://github.com/bcit-ci/CodeIgniter/archive/3.1.5.zip
Cara menggunakan php idp
  • Unzip Codeigniter
     # unzip 3.1.5.zip
  • Rename menjadi Codeigniter
     # mv CodeIgniter-3.1.5/ codeigniter
  • Clone Jagger
     # git clone https://github.com/Edugate/Jagger
Cara menggunakan php idp
/opt/rr3
  • Pindah ke folder application
     # cd /opt/rr3/application/
  • Tambah command di bawah ini, diantara "require" dan "doctrine/orm*" pada file /opt/rr3/application/composer.json
     # nano /opt/rr3/application/composer.json

"doctrine/common": "2.4.*",

  • Instal composer
    # composer install
  • Konfigurasi index.php
    # cp /opt/codeigniter/index.php /opt/rr3/
  • Edit file /opt/rr3/index.php
    # nano /opt/rr3/index.php

  • Cari baris di bawah ini :

define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');

Sebelum baris tersebut, tambahkan script di bawah ini :

$_SERVER['CI_ENV'] = 'production';

Cari baris di bawah ini :

Lalu ubah menjadi seperti di bawah ini :

$system_path = '/opt/codeigniter/system';

  • Tambahkan konfigurasi di bawah ini pada file /etc/apache2/sites-available/000-default-le-ssl.conf
    # nano /etc/apache2/sites-available/000-default-le-ssl.conf

DocumentRoot /opt/rr3
<Directory /opt/rr3>
	Require all granted
	RewriteEngine On
	RewriteBase /
	RewriteCond $1 !^(Shibboleth\.sso|index\.php|logos|signedmetadata|flags|images|app|schemas|fonts|styles|images|js|robots\.txt|pub|includes)
	RewriteRule  ^(.*)$ /index.php?/$1 [L]
	AllowOverride All
</Directory>
<Directory /opt/rr3/application>
	Require all denied
</Directory>

  • Restart service Apache2
    # systemctl restart apache2
  • Masuk ke mysql
    # mysql -u root

    Membuat database, user dan password

    mysql> create database rr3 CHARACTER SET utf8 COLLATE utf8_general_ci;
    
    mysql> grant all on rr3.* to rr3user@'localhost' identified by 'rr3pass';
    
    mysql> flush privileges;
    
    mysql> exit;

  • Jalankan script /opt/rr3/install.sh
    # /opt/rr3/install.sh
  • Backup beberapa file di bawah ini :
    # cp /opt/rr3/application/config/config-default.php /opt/rr3/application/config/config.php

    # cp /opt/rr3/application/config/config_rr-default.php /opt/rr3/application/config/config_rr.php

    # cp /opt/rr3/application/config/database-default.php /opt/rr3/application/config/database.php

    # cp /opt/rr3/application/config/email-default.php /opt/rr3/application/config/email.php

  • Edit file /opt/rr3/application/config/config.php
    # nano /opt/rr3/application/config/config.php

$config['base_url']   = 'https://sp-<domain-anda>.uii.id';

Tambahkan juga konfigurasi di bawah ini :

$config['csrf_regenerate'] = FALSE;
$config['csrf_exclude_uris'] = array();

  • Sebelumnya generate password terlebih dulu untuk syncpass
    # tr -c -d '0123456789abcdefghijklmnopqrstuvwxyz' </dev/urandom | dd bs=32 count=1 2>/dev/null;echo

    Kemudian copytext hasil generatepassword

  • Edit file /opt/rr3/application/config/config_rr.php, rr_setup_allowed digunakan untuk inisialisasi user,

           feduserapplyform digunakan untuk mengaktifkan tombol Apply for an account saat ada user baru login menggunakan tombol Federated Access
           # nano /opt/rr3/application/config/config_rr.php

$config['rr_setup_allowed'] = TRUE; 
$config['syncpass'] = '<password_yang_tergenerate>';
$config['Shib_username'] = 'uid';
$config['feduserapplyform'] = true;


           Hapus bagian di bawah karena sudah deprecated

$config['nameids'] = array(
        'urn:mace:shibboleth:1.0:nameIdentifier' => 
    …………………  
		'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent',
                );

Lalu edit metadata_validuntil_days (memperpanjang expired date metadata) seperti berikut :

$config['metadata_validuntil_days'] = '30';

  • Edit file /opt/rr3/application/config/database.php
    # nano /opt/rr3/application/config/database.php

$db['default']['hostname'] = '127.0.0.1';
$db['default']['username'] = 'rr3user';
$db['default']['password'] = 'rr3pass';
$db['default']['database'] = 'rr3';
$db['default']['dsn']= 'mysql:host=127.0.0.1;port=3306;dbname=rr3';

  • Setting owner folder /opt/rr3 menjadi www-data:root
    # chown -R www-data:root /opt/rr3
  • Menjalankan file doctrine
    # /opt/rr3/application/doctrine
  • Untuk mengisi tabel, jalankan perintah di bawah ini. Ini akan mem-parsing semua entitas dalam folder application/model
    # /opt/rr3/application/doctrine orm:schema-tool:create
  • Untuk mode production maka perlu recreate proxy
    # /opt/rr3/application/doctrine orm:generate-proxies
  • Buka URL berikut pada browser https://sp-
    Cara menggunakan php idp
    <domain-anda>.uii.id/setup
  • Membuat user Administrator

   

Cara menggunakan php idp

  • Setelah klik tombol submit akan muncul seperti di bawah ini, kembalikan rr_setup_allowed ke FALSE

   

Cara menggunakan php idp

# nano /opt/rr3/application/config/config_rr.php

$config['rr_setup_allowed'] = FALSE;

  • Edit file /opt/rr3/application/config/routes.php
    # nano /opt/rr3/application/config/routes.php

    $route['home']  = 'dashboard';

  • Buka URL berikut pada browser https://sp-
    Cara menggunakan php idp
    <domain-anda>.uii.id
    kemudian login menggunakan user Administrator yang telah dibuat.

   

Cara menggunakan php idp

  • Agar memudahkan client untuk mengakses menggunakan SSO, ganti button Federated Access menjadi Login with SSO dengan cara mengubah file /opt/rr3/application/language/english/rr_lang.php

    # nano /opt/rr3/application/language/english/rr_lang.php

    $lang['federated_access']           = 'Login with SSO';

    Cara menggunakan php idp

  • Instal gearman library python
    # pip install gearman
  • Download rr3-addons kemudian simpan pada folder /opt
    # cd /opt
    # git clone https://github.com/janul/rr3-addons.git
    # cd /etc/init.d/ ; ln -s /opt/rr3-addons/gearman-workers/gearman-workers
    # chmod u+x /opt/rr3-addons/gearman-workers/gearman-workers
  • Buat folder untuk menyimpan metadata certificate signer dan key
    # mkdir /opt/md-signer ; chown root:root /opt/md-signer ; chmod 644 /opt/md-signer
  • Generate metadata-signer.crt dan metadata-signer.key, kemudian simpan di dalam folder /opt/md-signer
    # openssl req -x509 -nodes -days 1095 -newkey rsa:2048 -out /opt/md-signer/metadata-signer.crt -keyout /opt/md-signer/metadata-signer.key -subj "/CN=sp<domain-anda>.uii.id"
    # chmod 400 /opt/md-signer/metadata-signer.key ; chmod 644 /opt/md-signer/metadata-signer.crt
  • Download XMLSecTool yang akan digunakan untuk Sign Metadata
    # cd /opt ; wget http://shibboleth.net/downloads/tools/xmlsectool/2.0.0/xmlsectool-2.0.0-bin.zip
    Cara menggunakan php idp

    # unzip xmlsectool-2.0.0-bin.zip ; rm -f xmlsectool-2.0.0-bin.zip
  • Edit file /opt/rr3-addons/gearman-workers/gearman-workers
    # nano /opt/rr3-addons/gearman-workers/gearman-workers

Disable WORK_DIR dan ubah path seperti di bawah ini :

#WORK_DIR="/lib/foo"
DAEMON="/usr/bin/python"
ARGS="/opt/rr3-addons/gearman-workers/gearman-worker-metasigner.py"
PIDFILE="/run/gearman/gworkers.pid"

  • Buat folder untuk menyimpan signedmetadata
    # mkdir /opt/rr3/signedmetadata
    # chown www-data:root /opt/rr3/signedmetadata -R
  • Edit file /opt/rr3-addons/gearman-workers/gearman-worker-metasigner.py
    # nano /opt/rr3-addons/gearman-workers/gearman-worker-metasigner.py

os.environ["JAVA_HOME"] = "/usr/lib/jvm/java-1.8.0-openjdk-amd64";
xmlsecommand = "/opt/xmlsectool-2.0.0/xmlsectool.sh"
cert="/opt/md-signer/metadata-signer.crt"
certkey="/opt/md-signer/metadata-signer.key"
cerpass=""
destination="/opt/rr3/signedmetadata"

  • Edit file /opt/rr3/application/config/config_rr.php
    # nano /opt/rr3/application/config/config_rr.php

$config['signdigest'] = 'SHA-256';
$config['mq'] = 'gearman';
$config['gearman'] = TRUE;

  • Restart service gearman-job-server dan gearman-workers
     # systemctl restart gearman-job-server
# /etc/init.d/gearman-workers start
  • Periksa php gearman dependencies
     # php -m | grep gearman
  • Periksa service gearman dengan perintah di bawah ini :
     # ps aux | grep gearman

gearman 47762 0.0 0.3 499456 6788 ? Ssl 07:40 0:00 /usr/sbin/gearmand --pid-file=/run/gearman/gearmand.pid --listen=localhost --daemon --log-file=/var/log/gearman-job-server/gearmand.log
root 48288 0.6 0.7 52596 13952 pts/0 S 07:47 0:00 python /opt/rr3-addons/gearman-workers/gearman-worker-metasigner.py

Instalasi Identity Provider (IdP)


Identity Provider (IdP) bertanggung jawab untuk otentikasi user dan menyediakan informasi user ke Shibboleth Service Provider (SP).

System Requirements

  1. Ubuntu 18.04
  2. Tomcat9
  3. jdk 11
  4. IdP 4.0.1
  5. Apache 2.4.29

Install Requirements

  • Update dan Upgrade Ubuntu
     # apt update && apt upgrade
  • Instal paket yang dibutuhkan
     # apt install openjdk-11-jre ca-certificates openssl tomcat9 apache2 ntp expat libmysql-java libcommons-dbcp-java libcommons-pool-java --no-install-recommends unzip
  • Periksa versi java yang telah diinstal
     # java -version
  • Periksa lokasi java home path
     # update-java-alternatives -l
  • Periksa status service tomcat9
     # systemctl status tomcat9
  • Periksa status service apache2
     # systemctl status apache2
  • Tambahkan variabel di /etc/environment
     # nano /etc/environment

JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64

IDP_SRC=/usr/local/src/shibboleth-identity-provider-4.0.1

  • Reload environment
     # source /etc/environment
  • Tambahkan variabel di /etc/default/tomcat9
     # nano /etc/default/tomcat9

JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64

JAVA_OPTS="-Djava.awt.headless=true -XX:+DisableExplicitGC -XX:+UseParallelOldGC -Xms256m -Xmx2g -Djava.security.egd=file:/dev/./urandom"

  • Tambahkan repository SSL dengan menggunakan Certbot untuk membuat SSL Letsencrypt dan sesuaikan dengan domain organisasi Anda.
     # add-apt-repository ppa:certbot/certbot

# apt install python-certbot-apache

# sudo certbot --apache -d <domain-idp-anda.uii.ac.id>

  • Notes: Jika Anda memiliki SSL pada domain IdP, maka dapat menambahkan konfigurasi Apache2 secara manual seperti di bawah ini :
     # nano /etc/apache2/sites-available/default-ssl.conf

<IfModule mod_ssl.c>

            SSLStaplingCache shmcb:/var/run/ocsp(128000) 

            <VirtualHost _default_:443>
                 ServerName idp.uii.ac.id:443
                 ServerAdmin webmaster@localhost
                 DocumentRoot /var/www/html
                 ErrorLog ${APACHE_LOG_DIR}/error.log
                 CustomLog ${APACHE_LOG_DIR}/access.log combined
                 SSLEngine on
                 SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
                 SSLCipherSuite "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH"
                 SSLCompression Off
                 SSLUseStapling          on
                 SSLStaplingResponderTimeout 5
                 SSLStaplingReturnResponderErrors off
                 Header always set Strict-Transport-Security "max-age=63072000;includeSubDomains;preload"
                 SSLCertificateFile      /root/cert/uii.crt
                 SSLCertificateKeyFile   /root/cert/uii.key
                 <FilesMatch "\.(cgi|shtml|phtml|php)$">
                      SSLOptions +StdEnvVars
                 </FilesMatch>
                 <Directory /usr/lib/cgi-bin>
                      SSLOptions +StdEnvVars
                 </Directory>
            </VirtualHost>
       </IfModule>

  • Konfigurasi Apache2 agar redirect ke HTTPS.
     # nano /etc/apache2/sites-available/000-default.conf

<VirtualHost *:80>
            ServerName "idp.uii.ac.id"
            RedirectMatch ^/$ https://idp.uii.ac.id/idp/shibboleth 
            ServerAdmin webmaster@localhost
            DocumentRoot /var/www/html
            ErrorLog ${APACHE_LOG_DIR}/error.log
            CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

  • Aktifkan modul proxy_http, ssl, dan headers pada Apache2, kemudian restart web server apache2.
    # a2enmod proxy_http ssl headers alias include negotiation
    # systemctl restart apache2
  • Pindah ke direktori /usr/local/src/
    # cd /usr/local/src/
  • Kemudian download Shibboleth Identity Provider v4.0.1 dengan perintah wget alamat-shibboleth-idp.
    # wget https://shibboleth.net/downloads/identity-provider/archive/4.0.1/shibboleth-identity-provider-4.0.1.tar.gz
    Cara menggunakan php idp
  • Ekstrak hasil download shibboleth IdP pada direktori /usr/local/src/
     # tar -xzvf shibboleth-identity-provider-4.0.1.tar.gz
  • Link beberapa library yang diperlukan pada shibboleth idp
     # ln -s /usr/share/java/mysql-connector-java.jar shibboleth-identity-provider-4.0.1/webapp/WEB-INF/lib

    # ln -s /usr/share/java/commons-dbcp.jar shibboleth-identity-provider-4.0.1/webapp/WEB-INF/lib

   # ln -s /usr/share/java/commons-pool.jar shibboleth-identity-provider-4.0.1/webapp/WEB-INF/lib

  • Jalankan file install.sh pada direktori idp bin/install.sh
     # ./shibboleth-identity-provider-4.0.1/bin/install.sh
  • Isikan beberapa konfigurasi yang dibutuhkan oleh identity provider

Source (Distribution) Directory (press <enter> to accept default):[/usr/local/src/shibboleth-identity-provider-4.0.1] ? (Enter)
Installation Directory: [/opt/shibboleth-idp] ? (Enter)
Host Name: [<ip address>] ? idp-<domainanda>.uii.id
Backchannel PKCS12 Password: Password_anda
Re-enter password: Password_anda
Cookie Encryption Key Password: Password_anda
Re-enter password: Password_anda
SAML EntityID: [https://idp-<domain_anda>/idp/shibboleth] ? (Enter)
Attribute Scope: [idp-<domain_anda>] ? (Enter)

  • Pindah ke direktori /opt/shibboleth-idp
     # cd /opt/shibboleth-idp/
  • Ganti owner menjadi tomcat pada direktori logs, metadata, credentials, conf, system dan war

  # chown tomcat: credentials/ logs/ -R

  # chmod 777 logs/

  # chown tomcat:root conf/ metadata/ system/ war/ -R

  • Pindah ke direktori /opt/shibboleth-idp/edit-webapp/WEB-INF/lib/, lalu download JSTL library yang digunakan untuk memvisualisasikan halaman status.
     # cd /opt/shibboleth-idp/edit-webapp/WEB-INF/lib/
# wget https://build.shibboleth.net/nexus/service/local/repositories/thirdparty/content/javax/servlet/jstl/1.2/jstl-1.2.jar
Cara menggunakan php idp
  • Download tomcat-jdbc.jar sebagai modul konektor Apache2, Tomcat, dan Database, kemudian extract pada direktori /opt/shibboleth-idp/edit-webapp/WEB-INF/lib/
     # wget http://www.java2s.com/Code/JarDownload/tomcat-jdbc/tomcat-jdbc.jar.zip
Cara menggunakan php idp

# unzip tomcat-jdbc.jar.zip
  • Ubah owner jstl-1.2.jar dan tomcat-jdbc.jar menjadi tomcat
     # chown -R tomcat jstl-1.2.jar tomcat-jdbc.jar
  • Tambahkan konfigurasi di bawah ini pada file /lib/systemd/system/tomcat9.service, agar dapat menulis di dalam folder shibboleth-idp
     # nano /lib/systemd/system/tomcat9.service

ReadWritePaths=/opt/shibboleth-idp/

     # systemctl daemon-reload
  • Build ulang idp dengan perintah di bawah ini
     # /opt/shibboleth-idp/bin/build.sh
  • Isikan sesuai dengan proses instalasi idp di awal

Installation Directory: [/opt/shibboleth-idp] ? (Enter)

  • Edit file /etc/tomcat9/server.xml
     # nano /etc/tomcat9/server.xml

Disable bagian dibawah ini :

<!--
<Connector port="8080" protocol="HTTP/1.1"
	connectionTimeout="20000"
	URIEncoding="UTF-8"
	redirectPort="8443" />
-->


Tambahkan baris konektor 8009 (AJP)

<Connector port="8009" protocol="AJP/1.3" redirectPort="443" address="127.0.0.1" enableLookups="false" tomcatAuthentication="false"/>

  • Membuat file idp.xml pada direktori /etc/tomcat9/Catalina/localhost/
     # nano /etc/tomcat9/Catalina/localhost/idp.xml

<Context docBase="/opt/shibboleth-idp/war/idp.war"
	privileged="true"
	antiResourceLocking="false"
	swallowOutput="true"/>

  • Membuat file konfigurasi Apache untuk IdP
     # nano /etc/apache2/sites-available/idp.conf

<IfModule mod_proxy.c>
	ProxyPreserveHost On
	RequestHeader set X-Forwarded-Proto "https"
<Proxy ajp://localhost:8009>
	Require all granted
</Proxy>
	ProxyPass /idp ajp://localhost:8009/idp retry=5
	ProxyPassReverse /idp ajp://localhost:8009/idp retry=5
</IfModule>

  • Enable modul proxy_ajp dan halaman IdP pada Apache2
     # a2enmod proxy_ajp
# a2ensite idp.conf
# systemctl restart apache2
  • Lakukan perubahan pada file context.xml dalam direktori /etc/tomcat9/ untuk mencegah kesalahan pada persistent session yang dibuat oleh IdP
     # nano /etc/tomcat9/context.xml


Hilangkan comment pada bagian di bawah ini :

  • Restart service tomcat9
     # systemctl restart tomcat9
  • Untuk melihat status IdP dapat menjalankan perintah di bawah ini :
     # /opt/shibboleth-idp/bin/status.sh
  • Setelah itu lakukan pengecekkan status IdP, dengan mengakses metadata yang dihasilkan melalui browser dengan alamat di bawah ini : https://idp-
    Cara menggunakan php idp
    <domain-anda>/idp/shibboleth
  • Lakukan beberapa penyesuaian pada file /opt/shibboleth-idp/conf/ldap.properties, agar IdP dapat terhubung dengan Server AD ataupun LDAP.

          Jika menggunakan LDAP maka LDAP.authenticator menggunakan bindSearchAuthenticator,

          Jika menggunakan AD sebagai Data Source maka LDAP.authenticator dapat diubah dengan adAuthenticator.

Notes: Jika anda menggunakan LDAP sebagai datasource

# nano /opt/shibboleth-idp/conf/ldap.properties

idp.authn.LDAP.authenticator = bindSearchAuthenticator
idp.authn.LDAP.ldapURL = ldap://idp-<domain-anda>.uii.id:389
idp.authn.LDAP.useStartTLS = false
idp.authn.LDAP.baseDN = dc=idp-<domain-anda>,dc=uii,dc=id
idp.authn.LDAP.userFilter = (uid={user})
idp.authn.LDAP.bindDN = cn=admin,dc=idp-<domain-anda>,dc=uii,dc=id
idp.authn.LDAP.dnFormat = %s@idp-<domain-anda>.uii.id

Notes: Jika anda menggunakan Active Directory (AD) sebagai datasource

    # nano /opt/shibboleth-idp/conf/ldap.properties

idp.authn.LDAP.authenticator = adAuthenticator
idp.authn.LDAP.ldapURL = ldap://ad.bsi.io:389
idp.authn.LDAP.useStartTLS = false
idp.authn.LDAP.trustCertificates = %{idp.home}/credentials/ldap-server.crt
idp.authn.LDAP.trustStore = %{idp.home}/credentials/ldap-server.truststore
idp.authn.LDAP.returnAttributes = passwordExpirationTime,loginGraceRemaining
idp.authn.LDAP.baseDN = DC=uii,DC=ac,DC=id
idp.authn.LDAP.subtreeSearch = false
idp.authn.LDAP.userFilter = (sAMAccountName={user})
idp.authn.LDAP.bindDN = CN=sso,OU=Sistem,OU=Accounts,DC=uii,DC=ac,DC=id
idp.authn.LDAP.dnFormat = %
idp.attribute.resolver.LDAP.ldapURL = %{idp.authn.LDAP.ldapURL}
idp.attribute.resolver.LDAP.connectTimeout = %{idp.authn.LDAP.connectTimeout:PT3S}
idp.attribute.resolver.LDAP.responseTimeout = %{idp.authn.LDAP.responseTimeout:PT3S}
idp.attribute.resolver.LDAP.baseDN = %{idp.authn.LDAP.baseDN:undefined}
idp.attribute.resolver.LDAP.bindDN = %{idp.authn.LDAP.bindDN:undefined}
idp.attribute.resolver.LDAP.useStartTLS = %{idp.authn.LDAP.useStartTLS:true}
idp.attribute.resolver.LDAP.trustCertificates = %{idp.authn.LDAP.trustCertificates:undefined}
idp.attribute.resolver.LDAP.searchFilter = (sAMAccountName=$resolutionContext.principal)

  • Update secrets pada file /opt/shibboleth-idp/credentials/secrets.properties, credentialini merupakan password dari user bindDN yang akan digunakan untuk terhubung ke LDAP/AD.
     # nano /opt/shibboleth-idp/credentials/secrets.properties

idp.authn.LDAP.bindDNCredential = Federasi2021!

  • Lakukan konfigurasi pada file attribute-resolver /opt/shibboleth-idp/conf/attribute-resolver.xml, konfigurasi ini berfungsi untuk menyediakan attribute yang akan di-release ke Service Provider, ref pada InputDataConnector harus sama dengan id DataConnector.

           Standar oid number SAML versi 2 dapat dilihat di sini http://software.internet2.edu/eduperson/internet2-mace-dir-eduperson-201602.html

Cara menggunakan php idp
atau

           https://commons.lbl.gov/display/IDMgmt/Attribute+Definitions

Cara menggunakan php idp

     # nano /opt/shibboleth-idp/conf/attribute-resolver.xml

<!--      Attribute Definition         -->
<AttributeDefinition xsi:type="Simple" id="givenName">
	<InputDataConnector ref="myLDAP" attributeNames="givenName"/>
	<AttributeEncoder xsi:type="SAML1String" name="urn:mace:dir:attribute-def:givenName" encodeType="false" />
	<AttributeEncoder xsi:type="SAML2String" name="urn:oid:2.5.4.42" friendlyName="givenName" encodeType="false" />
</AttributeDefinition>
<AttributeDefinition id="uid" xsi:type="Simple">
	<InputDataConnector ref="myLDAP" attributeNames="uid"/>
	<AttributeEncoder xsi:type="SAML1String" name="urn:mace:dir:attribute-def:uid" encodeType="false" />
	<AttributeEncoder xsi:type="SAML2String" name="urn:oid:0.9.2342.19200300.100.1.1" friendlyName="uid" encodeType="false" />
</AttributeDefinition>
<AttributeDefinition xsi:type="Simple" id="mail">
	<InputDataConnector ref="myLDAP" attributeNames="mail"/>
	<AttributeEncoder xsi:type="SAML1String" name="urn:mace:dir:attribute-def:mail" encodeType="false" />
	<AttributeEncoder xsi:type="SAML2String" name="urn:oid:0.9.2342.19200300.100.1.3" friendlyName="mail" encodeType="false" />
</AttributeDefinition>
<!--      Data Connectors         -->  
<DataConnector id="myLDAP" xsi:type="LDAPDirectory"
	ldapURL="%{idp.attribute.resolver.LDAP.ldapURL}"
	baseDN="%{idp.attribute.resolver.LDAP.baseDN}"
	principal="%{idp.attribute.resolver.LDAP.bindDN}"
	principalCredential="%{idp.attribute.resolver.LDAP.bindDNCredential}">
	<FilterTemplate>
		<![CDATA[
			%{idp.attribute.resolver.LDAP.searchFilter}
		]]>
	</FilterTemplate>
</DataConnector>

  • Kemudian edit bagian valid untilsaja pada file /opt/shibboleth-idp/metadata/idp-metadata.xml, tambahkan kiranya 1 tahun setelahnya.
     # nano /opt/shibboleth-idp/metadata/idp-metadata.xml

<EntityDescriptor xmlns="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:shibmd="urn:mace:shibboleth:metadata:1.0" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:mdui="urn:oasis:names:tc:SAML:metadata:ui" xmlns:req-attr="urn:oasis:names:tc:SAML:protocol:ext:req-attr" validUntil="2022-05-27T01:35:31.706Z" entityID="https://idp.uii.id/idp/shibboleth*">

  • Restart tomcat9 service
     # systemctl restart tomcat9
  • Untuk melihat status IdP dapat menjalankan perintah di bawah ini :
     # /opt/shibboleth-idp/bin/status.sh
  • Setelah cek status IdP, Anda dapat mengakses metadata yang dihasilkan melalui browser dengan alamat di bawah ini :

   https://domain-anda/idp/shibboleth

Cara menggunakan php idp

Instalasi Service Provider (SP)


Service Provider (SP), bertanggung jawab untuk melindungi sumber daya online dan mengonsumsi informasi dari IdP. Service Provider merupakan aplikasi web yang berkomunikasi dengan Identity Provider, Service Provider ini dapat digabungkan dengan aplikasi berbasis web seperti Apache dan NGINX.

  • Meminta autentikasi kepada IdP
  • Menerima attribute dari IdP


System Requirements

  1. Ubuntu 18.04
  2. Apache 2.4.29

Install Requirements

  • Update dan Upgrade Ubuntu agar mendapatkan modul terbaru dari ubuntu
     # apt update && apt upgrade
  • Download paket repositori shibboleth SP
     # curl --fail --remote-name https://pkg.switch.ch/switchaai/ubuntu/dists/bionic/main/binary-all/misc/switchaai-apt-source_1.0.0ubuntu1_all.deb
Cara menggunakan php idp
  • Kemudian lakukan instalasi paket repository shibboleth SP
     # apt install ./switchaai-apt-source_1.0.0ubuntu1_all.deb
  • Refresh repositori
     # apt update
  • Instal Shibboleth Service Provider
     # apt install --install-recommends shibboleth -y
  • Generate certificate
     # shib-keygen -h sp-<DOMAINANDA>.uii.id
  • Edit file /etc/shibboleth/shibboleth2.xml
     # nano /etc/shibboleth/shibboleth2.xml

<ApplicationDefaults entityID="https://sp-<DOMAIN-ANDA>.uii.id/shibboleth"
REMOTE_USER="eppn subject-id pairwise-id persistent-id"
cipherSuites="DEFAULT:!EXP:!LOW:!aNULL:!eNULL:!DES:!IDEA:!SEED:!RC4:!3DES:!kRSA:!SSLv2:!SSLv3:!TLSv1:!TLSv1.1">
……………………
<Handler type="MetadataGenerator" Location="/Metadata" signing="true"/>
………………...
<CredentialResolver type="File" use="signing"
key="sp-key.pem" certificate="sp-cert.pem"/>
<CredentialResolver type="File" use="encryption"
key="sp-key.pem" certificate="sp-cert.pem"/>

  • Restart shibboleth Service Provider
     # systemctl restart shibd
  • Periksa service shibboleth Service Provider
     # shibd -t
  • Untuk mengakses metadata SP dapat diakses dengan URL https://sp-<DOMAIN-ANDA>.uii.id/Shibboleth.sso/Metadata
  • Edit file /etc/apache2/sites-available/000-default-le-ssl.conf
     # nano /etc/apache2/sites-available/000-default-le-ssl.conf

<Location /auth/fedauth>
	Options -Indexes +FollowSymLinks +MultiViews
	AuthType shibboleth
	ShibRequireSession On
	require valid-user
</Location>
<Location /index.php/auth/fedauth>
	Options -Indexes +FollowSymLinks +MultiViews
	AuthType shibboleth
	ShibRequireSession On
	require valid-user
</Location>

  • Restart service apache2
     # systemctl restart apache2


Membangun Federasi

  • Akses Jagger pada browser dengan URL https://domain_anda
    Cara menggunakan php idp
  • Membuat federasi dengan cara, klik Register → klik Federation

   

Cara menggunakan php idp

  • Kemudian isi form seperti di bawah, lalu klik Register 
    Internal/System name : penulisan tidak boleh ada spasi
    Access : berfungsi untuk mempublikasikan federasi yang dibuat

   

Cara menggunakan php idp

  • Kemudian akan masuk pada list approval, lalu klik tombol panah ()

   

Cara menggunakan php idp

  • Kemudian klik Accept Request

   

Cara menggunakan php idp

  • Jika sudah berhasil maka pada tab Federations akan tampil seperti di bawah ini :

    

Cara menggunakan php idp

Attribute Definitions


Attribute Definitions merupakan menu daftar attribute yang disediakan oleh Jagger.

Pada menu ini user Administrator dapat menghapus dan menambahkan attribute dengan mendefinisikan nama attribute, oid number SAML2 dan oid number SAML1.

  • Klik Administration > klik Attribute definitions

   

Cara menggunakan php idp

  • Hapus attribute Email dengan cara klik tombol remove pada attribute email, kemudian klik Remove.

           Hal ini dilakukan karena attribute mail yang sering digunakan bukan attribute Email.

   

Cara menggunakan php idp

  • Tambahkan attribute mail, klik Add attribute definition→ isi seperti di bawah → klik Submit

           SAML2 : urn:oid:0.9.2342.19200300.100.1.3

           SAML1 : urn:mace:dir:attribute-def:mail

           Standar oid number SAML versi 2 dapat dilihat di sini http://software.internet2.edu/eduperson/internet2-mace-dir-eduperson-201602.html

Cara menggunakan php idp
atau 

           https://commons.lbl.gov/display/IDMgmt/Attribute+Definitions

Cara menggunakan php idp

   

Cara menggunakan php idp

Konfigurasi IdP

  • Agar IdP dapat mengkonsumsi metadata dari Jagger maka harus menambahkan konfigurasi di file metadata-providers.xml pada VM IdP (akses VM IdP).

          metadataURL didapatkan dari URL metadata dari Jagger pada bagian tab Federations → klik Federasi Anda → klik tab Metadata → copy URL Federation metadata public link (signed),

Cara menggunakan php idp

          certificateFile didapatkan dari certificate Jagger pada file /opt/md-signer/metadata-signer.crt. Edit file /opt/shibboleth-idp/conf/metadata-providers.xml

     # nano /opt/shibboleth-idp/conf/metadata-providers.xml

<MetadataProvider id="Workshop" xsi:type="FileBackedHTTPMetadataProvider" backingFile="%{idp.home}/metadata/metadata-workshop-federation-signed.xml" metadataURL="https://jagger.federasi.id/signedmetadata/federation/Workshop-Federation/metadata.xml">
	<MetadataFilter xsi:type="SignatureValidation" certificateFile="%{idp.home}/credentials/metaroot.pem" />
	<MetadataFilter xsi:type="RequiredValidUntil" maxValidityInterval="P30D"/>
	<MetadataFilter xsi:type="EntityRoleWhiteList">	<RetainedRole>md:SPSSODescriptor</RetainedRole>
	</MetadataFilter>
</MetadataProvider>

  • Copy certificate dari VM Jagger pada file /opt/md-signer/metadata-signer.crt, kemudian paste pada file /opt/shibboleth-idp/credentials/metaroot.pem di VM IdP.

Registrasi Identity Provider (IdP)

  • Klik Register > klik Identity Provider

   

Cara menggunakan php idp

  • Kemudian akses metadata IdP pada browser dengan URL https://<domain-anda>/idp/shibboleth, lalu copy metadata tersebut dan paste pada Jagger → klik Next

   

Cara menggunakan php idp

  • Lalu muncul tampilan seperti di bawah, pilih Federasi yang sudah Anda buat atau Anda dapat bergabung ke Federasi yang Anda inginkan.

   

Cara menggunakan php idp

  • Pindah ke tab Organization → klik Add in new language → isi field sesuai di bawah ini :
    Name of organization= nama organisasi
    Displayname of organization= displayname organisasi
    URL to information about organization = alamat website dari organisasi

   

Cara menggunakan php idp

  • Pindah ke tab Contacts → klik Add contact → isi field yang ada

   

Cara menggunakan php idp

  • Pindah ke tab UI Information → klik Add in new language → isi field sesuai di bawah ini :
    Name of organization = nama organisasi
    Description of user community serviced = deskripsi dari aplikasi
    Keywords = keyword aplikasi
    URL to information about the Identity Provider = alamat URL aplikasi
    URL to Privacy Policy of the Service = alamat URL metadata IdP
    Logo of Service= jika punya, jika tidak dikosongi saja

  

Cara menggunakan php idp

  • Kemudian klik tombol Register pada bagian kanan bawah
  • Kemudian akan masuk ke list approval, lalu klik tombol panah ()
  • Selanjutnya pilih Management pada Do not assign → klik Accept request

  

Cara menggunakan php idp

Attribute Release Policy (ARP)


Attribute Release Policy (ARP) merupakan menu untuk manajemen attribute yang akan di-release oleh IdP.

Pada IdP v4.0.1, attribute filter dapat menggunakan ARP dari Jagger dengan mendefinisikan pada file /opt/shibboleth-idp/conf/services.xml.

  • Klik IdP yang telah Anda buat → klik tombol Edit → klik Attribute Policy

   

Cara menggunakan php idp

  • Untuk menambahkan attibute yang akan di-release, pindah ke tab Attribute/Default Policy, klik Add attribute → pilih attribute yang akan disediakan (contohnya attribute givenName, mail, uid) → pilih permit if required or desiredpada field Policy→ klik Add

          

Cara menggunakan php idp

  • Klik tab Federations → klik Workshop Federation(Federasi yang Anda ingin bergabung) → klik Metadata→ klik sign → klik OK

Konfigurasi Identity Provider (IdP)

  • Edit file /opt/shibboleth-idp/conf/services.xml, ref bean pada shibboleth.AttributeFilterResources harus sama dengan id bean FileBackedHTTPResource (yang ditambahkan di bagian bawah). URL ARP diambil dari Jagger pada bagian tab Identity Providers → pilih Identity Providers → klik button edit → klik Attribute PolicyInformation → copy URL ARP untuk ShibbolethIDP versi 3.x.
     # nano /opt/shibboleth-idp/conf/services.xml

Disable bagian di bawah ini :

<value>%{idp.home}/conf/attributes/default-rules.xml</value>

Kemudian tambahkan script ref bean seperti di bawah ini :

<util:list id ="shibboleth.AttributeFilterResources">
	<value>%{idp.home}/conf/attribute-filter.xml</value>
	<ref bean="WorkshopFederasiAttributeFilterResource"/>
</util:list>

Tambahkan script di bawah ini sebelum </beans>

<bean id="MyHTTPClient" parent="shibboleth.HttpClientFactory"
	p:connectionTimeout="PT30S"
	p:connectionRequestTimeout="PT30S"
	p:socketTimeout="PT30S" />
	<bean id="WorkshopFederasiAttributeFilterResource" class="net.shibboleth.ext.spring.resource.FileBackedHTTPResource"
		c:client-ref="MyHTTPClient"
		c:url="https://domain_anda/arp/format3exp/aHR0cHM6Ly9pZHAudWlpLmFjLmlkL2lkcC9zaGliYm9sZXRo/arp.xml"
		c:backingFile="%{idp.home}/conf/attribute-filter-jagger-federasi.xml"/>

  • Restart tomcat9
     # systemctl restart tomcat9
  • Saat melakukan restart tomcat9, pastikan Anda melakukan monitor log. File log IdP terletak di /opt/shibboleth-idp/logs/idp-process.log.
     # tail -f /opt/shibboleth-idp/logs/idp-process.log
  • Periksa status shibboleth IdP
     # /opt/shibboleth-idp/bin/status.sh

   

Cara menggunakan php idp

Registrasi Service Provider (SP)

  • Klik Register → klik Service Provider

   

Cara menggunakan php idp

  • Kemudian akses metadata SP pada browser dengan URL https://sp-<domain-anda>.uii.id/Shibboleth.sso/Metadata, lalu copy metadata tersebut dan paste pada Jagger → klik Next

   

Cara menggunakan php idp

  • Lalu muncul tampilan seperti di bawah, pilih Federasi yang sudah Anda buat atau Anda dapat bergabung ke Federasi yang Anda inginkan.

   

Cara menggunakan php idp

  • Pindah ke tab Organization→ klik Add in new language → isi field sesuai di bawah ini :
    Name of organization = nama organisasi
    Displayname of organization = displayname organisasi
    URL to information about organization = alamat website dari organisasi

   

Cara menggunakan php idp

  • Pindah ke tab Contacts → klik Add contact→ isi field yang ada

   

Cara menggunakan php idp

  • Pindah ke tab UI Information → klik Add in new language→ isi field sesuai di bawah ini :
    Name of the Service = nama aplikasi (nama yang akan tampil pada form login)
    URL to information about the Service = alamat URL aplikasi
    Description of the Service = deskripsi dari aplikasi
    Keywords = keyword aplikasi
    URL to Privacy Policy of the Service= alamat URL metadata SP
    Logo of Service= jika punya, jika tidak dikosongi saja

   

Cara menggunakan php idp

  • Pada tab SAML, Anda dapat menyesuaikan pada bagian WantAssertionsSigned dan AuthnRequestsSigned (jika memang Service Provider/aplikasi Anda membutuhkan)
  • Pada tab Certificates, Anda dapat menyesuaikan pada bagian EncryptionMethods(jika memang Service Provider/aplikasi Anda membutuhkan)
  • Pindah ke tab Required Attributes, tambahkan attribute yang akan di-request (contohnya givenName, mail, uid) → klik Add → klik Register

   

Cara menggunakan php idp

  • Kemudian akan masuk ke list approval, lalu klik tombol panah ()
  • Selanjutnya pilih Management pada Do not assign → klik Accept request

   

Cara menggunakan php idp

  • Klik tab Federations → klik Workshop Federation (Federasi yang Anda ingin bergabung) → klik Metadata→ klik sign → klik OK

   

Cara menggunakan php idp

  • Periksa SP sudah berhasil terdaftar dengan cara, klik tombol panah ( ) pada Federation metadata public link (signed), kemudian cek apakah metadata SP sudah ada.

   

Cara menggunakan php idp

Konfigurasi Service Provider (SP)

  • Edit file /etc/shibboleth/shibboleth2.xml di VM SP.

            SSO entityID adalah entityID IdP yang akan digunakan.

           URLyang digunakan pada MetadataProvider diambil dari URL metadata dari Jagger pada bagian tab Federations→ klik Federasi Anda → klik tab Metadata → copy URL Federation metadata  public link (signed),

Cara menggunakan php idp

          backingFilePath diarahkan ke folder /var/cache/shibboleth, certificate pada MetadataFilter didapatkan dari certificate Jagger pada file /opt/md-signer/metadata-signer.crt.

Sesuaikan maxValidityInterval dengan konfigurasi yang ada di VM Jagger pada file /opt/rr3/application/config/config_rr.php

di bawah ini kami berikan contoh maxValidityInterval="2592000" ini dalam satuan second ini sama artinya dengan 30 hari pada konfigurasi jagger. Jangan sampai terbalik!!

     # nano /etc/shibboleth/shibboleth2.xml

<SSO entityID="https://idp-<DOMAINANDA>.uii.id/idp/shibboleth"
discoveryProtocol="SAMLDS" discoveryURL="https://ds.example.org/DS/WAYF">
SAML2
</SSO>
…………………………………
<MetadataProvider type="XML" validate="true"
	url="https://sp-<DOMAINANDA>.uii.id/signedmetadata/federation/Workshop-Federation/metadata.xml"
	backingFilePath="federation-metadata.xml" maxRefreshDelay="7200">
	<MetadataFilter type="RequireValidUntil" maxValidityInterval="2592000"/>
	<MetadataFilter type="Signature" certificate="fedsigner.pem" verifyBackup="false"/>
	<DiscoveryFilter type="Exclude" matcher="EntityAttributes" trimTags="true"
	attributeName="http://macedir.org/entity-category"
	attributeNameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"
	attributeValue="http://refeds.org/cat

  • Copy certificate jagger pada file /opt/md-signer/metadata-signer.crt, kemudian paste pada file /etc/shibboleth/fedsigner.pem.
  • Konfigurasi attribute-map.xml, attribute map ini berfungsi untuk mapping attribute yang akan digunakan pada aplikasi atau Service Provider.
     # nano /etc/shibboleth/attribute-map.xml

<Attribute name="urn:oid:2.5.4.42" id="givenName"/>
<Attribute name="urn:oid:0.9.2342.19200300.100.1.1" id="uid"/>
<Attribute name="urn:oid:0.9.2342.19200300.100.1.3" id="mail"/>
<Attribute name="urn:mace:dir:attribute-def:givenName" id="givenName"/>
<Attribute name="urn:mace:dir:attribute-def:uid" id="uid"/>
<Attribute name="urn:mace:dir:attribute-def:mail" id="mail"/>

  • Restart service shibd
     # systemctl restart shibd
  • Periksa service shibd
     # shibd -t
       overall configuration is loadable, check console or log for non-fatal problems


Attribute Release Policy (ARP)

  • Periksa apakah SP sudah mengonsumsi attribute dari IdP dengan cara, klik IdP yang telah dibuat (IdP yang akan digunakan) → klik tombol Edit → klik Attribute Policy

   

Cara menggunakan php idp

  • Pada tab Information, klik URL Attribute Release Policy untuk ShibbolethIDP versi 3.x.

   

Cara menggunakan php idp
   

   

Cara menggunakan php idp

Pengujian pada Federated Access Jagger

  • Login jagger menggunakan Federated Access

   

Cara menggunakan php idp

  • Kemudian akan di-redirect ke halaman IdP, lalu login menggunakan username dan password yang sudah dibuat di LDAP atau AD → klik Login

   

Cara menggunakan php idp

  • Akan muncul attribute yang sebelumnya di-request yaitu givenName, mail dan uid → klik Accept

   

Cara menggunakan php idp

  • Muncul tampilan seperti di bawah ini, lalu klik Apply for an account. Selanjutnya tunggu proses approval oleh Administrator.

           Hal ini muncul karena username yang digunakan untuk login belum terdaftar pada Jagger.

           

Cara menggunakan php idp

  • Login ke Jagger menggunakan user Administrator, akan muncul request user seperti di bawah. Kemudian klik tombol panah ()

   

Cara menggunakan php idp

  • Kemudian klik Accept request.

   

Cara menggunakan php idp

  • Login ulang menggunakan Federated Access, maka akan mendapatkan tampilan seperti di bawah ini :

   

Cara menggunakan php idp


Integrasi Moodle sebagai Servicer Provider

  • Edit file /etc/php/7.2/apache2/php.ini

max_execution_time=600
post_max_size = 16M
upload_max_filesize = 16M

  • Restart service apache2
    # systemctl restart apache2

Video tutorial 1

Video tutorial 2