Dokumen ini memberikan panduan instalasi dan konfigurasi simpleSAMLphp untuk membangun platform single sign-on berbasis SAML. Terdapat instruksi tentang download, instalasi, konfigurasi Apache dan PHP, serta penjelasan modul-modul yang tersedia seperti autentikasi jejaring sosial, CAS, dan lainnya.
Koperasi NP : Program Penanggulangan Kemiskinan Kabinet Indonesia Bersatu II ...
Instalasi dan Konfigurasi simpleSAMLphp
1. Instalasi dan Konfigurasi simpleSAMLphp
OpenThink Labs Workshops
Membangun Platform Single Sign On (SSO) berbasis Security Assertion Markup Language (SAML)
Wildan Maulana <wildan.m@openthinklabs.com>
Senin 27 April 2015
Daftar Isi
Dokumentasi dan Berita terkait simpleSAMLphp.....................................................................................3
Versi Pengembangan..................................................................................................................................3
Prasyarat.....................................................................................................................................................3
Download dan Instalasi simpleSAMLphp.................................................................................................3
Melakukan upgrade dari versi sebelumnya ke versi terbaru simpleSAMLphp.........................................4
Mengupgrade File-File Konfigurasi......................................................................................................4
Mengupgrade File-File Metadata..........................................................................................................5
Mengkonfigurasi Apache...........................................................................................................................5
Mengkonfigurasi simpleSAMLphp : config.php.......................................................................................6
Mengkonfigurasi PHP................................................................................................................................6
Mengirim e-mail dari PHP....................................................................................................................6
Module-Module Bawaan yang Tersedia....................................................................................................7
adfs........................................................................................................................................................7
aggregator..............................................................................................................................................7
aggregator2............................................................................................................................................7
aselect....................................................................................................................................................7
authcrypt................................................................................................................................................7
authfacebook.........................................................................................................................................7
authlinkedin...........................................................................................................................................8
authmyspace..........................................................................................................................................8
authorize................................................................................................................................................8
authtwitter..............................................................................................................................................8
authwindowslive....................................................................................................................................8
authX509...............................................................................................................................................8
authYubiKey..........................................................................................................................................8
autotest...................................................................................................................................................9
cas..........................................................................................................................................................9
casserver................................................................................................................................................9
cdc.........................................................................................................................................................9
consent...................................................................................................................................................9
consentAdmin........................................................................................................................................9
1
3. Dokumentasi dan Berita terkait simpleSAMLphp
Dokumentasi ini merupakan saduran dari dokumentasi resmi simpleSAMLphp dan merupakan bagian
dari serangkaian dokumentasi lainnya terkait simpleSAMLphp.
• Daftar lengkap dokumentasi resmi simpleSAMLphp, http://simplesamlphp.org/docs/stable/
• Berita terbaru mengenai simpleSAMLphp, https://rnd.feide.no/category/simplesamlphp/
• Homepage simpleSAMLphp, http://simplesamlphp.org/
Versi Pengembangan
Prasyarat
• Webserver yang dapat mengeksekusi script PHP
• Versi PHP yang digunakan >= 5.2.0
• Mendukung beberapa ekstensi PHP berikut :
◦ Selalu memerlukan : date, dom, hash, libxml, openssl, pcre, SLP dan
zlib
◦ Ketika mengenkripsi assertions : mcrypt
◦ Ketika melakukan autentifikasi ke server LDAP : ldap
◦ Ketika melakukan autentifikasi ke server RADIUS : radius
◦ Ketika menyimpan informasi session ke server memcache : memcache
◦ Ketika menggunakan database :
▪ Selalu : PDO
▪ Driver database : (mysql, pgsql, ...)
Paket software yang perlu diinstall bervarisai dari satu platform dan distribusi ke platform dan
distribusi lainnya. Silahkan baca dokumentasi platform dan distribusi sistem operasi Anda.
Download dan Instalasi simpleSAMLphp
Rilis terbaru simpleSAMLphp dapat ditemukan dialamat : http://code.google.com/p/simplesamlphp/.
Untuk mendownload versi stabil terbaru, download saja file arsip yang berada pada bagian Featured
Download.
3
4. Masuklah ke direktori dimana Anda ingin menginstall simpleSAMLphp, dan ekstraklah file arsip yang
baru saja Anda download :
cd /opt
tar xzf simplesamlphp-1.x.y.tar.gz
mv simplesamlphp-1.x.y simplesamlphp
Melakukan upgrade dari versi sebelumnya ke versi terbaru
simpleSAMLphp
Ekstrak versi baru simpleSAMLphp :
cd /opt
tar xzv simplesamlphp-1.x.y.tar.gz
Copy file-file konfigurasi dari versi sebelumnya :
cd /opt/simplesamlphp-1.x.y
rm -rfv config metadata
cp -rfv ../simplesamlphp/config config
cp -rfv ../simplesamlphp/metadata metadata
Gantilah versi yang lama dengan versi yang baru :
mv simplesamlphp simplesamlphp.old
mv simplesamlphp-1.x.y simplesamlphp
Jika format file-file config dan metadata berubah dari versi lama simpleSAMLphp yang Anda gunakan
(periksalah log revisi), Anda mungkin harus mengupdate konfigurasi dan metadata Anda setelah
mengupdate kode simpleSAMLphp.
Mengupgrade File-File Konfigurasi
Pendekatan terbaik untuk melakukan hal ini adalah dengan manjalankan diff antara versi
config.php Anda yang lama dan config.php yang baru yang berada pada
config-templates/config.php dan lakukanlah modifikasi yang diperlukan pada template
4
5. yang baru. Dengan cara ini, maka dapat dipastikan semua entri pada versi terbaru config.php akan
terbawa, dan sekaligus menyimpan hasil modifikasi yang telah Anda lakukan.
Mengupgrade File-File Metadata
Kemungkinan besar format metadata tidak akan mengalami perubahan. Jika memang ia mengalami
perubahan, Anda akan menerima pesan error yang jelas saat proses startup yang mengindikasikan
bagaimana dan apa yang harus Anda update. Anda sebaiknya melihat isi metadata yang berada di
direktori metadata-templates setelah proses upgrade untuk melihat apakah nilai default yang
direkomendasika telah berubah.
Mengkonfigurasi Apache
Contoh dibawah mengasumsikan kalau simpleSAMLphp diinstall di lokasi default,
/opt/simplesamlphp. Anda bisa saja memiliki lokasi yang berbeda, tapi Anda harus mengubah
konfigurasi jika ingin melakukan hal ini.
Subdirektori simplesamlphp yang harus dapat diakses via web hanya direktori www saja. Ada beberapa
cara untuk menyimpan simpleSAMLphp tergantun kepada struktur web sites Anda di Apache. Salah
satu konfigurasi terbaik adalah dengan menggunakan Alias, khususnya jika simpleSAMLphp dijadikan
sebagai Service Provider.
Untuk membuat SSL Certificate silahkan lihat [5]
Buka file konfigurasi Virtual Host yang ingin Anda gunakan untuk menjalankan simpleSAMLphp.
Konfigurasinya akan seperti berikut (sesuaikan dengan kebutuhan Anda) :
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName http://idp.negeripelangi.org
DocumentRoot /home/www/idp
<Directory /home/www/idp>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
5
7. SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-6]"
nokeepalive ssl-unclean-shutdown
downgrade-1.0 force-response-1.0
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
</VirtualHost>
</IfModule>
Perhatikan directive Alias, semua url yang sesuai dengan http(s)://services.example.com/simplesaml/*
akan ditangani oleh simpleSAMLphp. Secara default simpleSAMLphp menawarkan beberapa
interface, yang semuanya berada didalam direktori www dari lokasi instalasi simpleSAMLphp Anda.
Anda dapat menggunakan Alias apa saja, tetapi Anda harus mengubah 1 entri konfigurasi di
config/config.php, yaitu :
$config = array (
[...]
'baseurlpath' => 'simplesaml/',
Mengkonfigurasi simpleSAMLphp : config.php
Ada beberapa konfigurasi di config.php yang harus Anda segera ubah :
1. Mengeset password Administrator. Hal ini diperlukan agar dapat mengakses beberapa halaman
di antar muka instalasi simpleSAMLphp
'auth.adminpassword' => 'setnewpasswordhere',
2. Mengeset secret salt. Yaitu sebuah string acak. Beberapa bagian dari simpleSAMLphp
memerlukan salt ini. SimpleSAMLphp akan menampilkan pesan error jika salt ini belum
diubah dari nilai defaultnya. Perintah berikut akan membantu Anda untuk menggenerate string
acak pada (beberapa) sistem Unix :
7
8. tr -c -d '0123456789abcdefghijklmnopqrstuvwxyz' </dev/urandom |
dd bs=32 count=1 2>/dev/null;echo
Berikut ini adalah contoh opsi konfigurasinya :
'secretsalt' => 'randombytesinsertedhere',
3. Mengeset informasi kontak teknikal. Informasi ini akan tersedia pada
metadata yang digenerate. Alamat e-mail juga akan digunakan untuk
menerima pesan error yang dikirimkan secara otomatis oleh
simpleSAMLphp. Berikut adalah contohnya :
'technicalcontact_name' => 'Wildan Maulana',
'technicalcontact_email' => 'wildan.m@openthinklabs.com',
4. Mengeset timezone yang Anda gunakan :
'timezone' => 'Asia/Jakarta',
Mengkonfigurasi PHP
Mengirim e-mail dari PHP
Pastikan konfigurasi instalasi PHP Anda dapat mengirim email, karena beberapa bagian
simpleSAMLphp memerlukan hal ini.
Module-Module Bawaan yang Tersedia
adfs
Merupakan module yang mengimplementasikan protokol Active Directory Federation Services
(ADFS)
untuk Identity Provider.
aggregator
Module ini mangaggregate sekumpulan entitas SAML menjadi dokumen SAML 2.0 dengan
EntitiesDescriptor yang memiliki beberapa entitas didalamnya.
Informasi lebih lanjut, http://simplesamlphp.org/docs/stable/aggregator:aggregator
8
9. aggregator2
Merupakan module eksperimental untuk mengaggregate metadata.
Informasi lebih lanjut, http://simplesamlphp.org/docs/stable/aggregator2:aggregator2
aselect
Module yang memungkinkan anda untuk menggunakan sumber autentifikasi A-Select melalui
simpleSAMLphp.
Untuk informasi lebih lanjut tentang module ini silahkan baca
http://simplesamlphp.org/docs/stable/aselect:aselect, sedangkan untuk A-Select, Anda dapat membaca
http://www.aselect.org/home.html
authcrypt
Module ini memungkinkan anda untuk menggunakan sumber autentifikasi username dan password
yang dihash atau sumber autentifikasi yang berupa file 'Htpasswd' Apache.
authfacebook
Dengan module ini anda dapat menggunakan sumber autentifikasi Facebook dengan simpleSAMLphp.
Untuk informasi lebih lanjut, silahkan baca
http://simplesamlphp.org/docs/stable/authfacebook:authfacebook
authlinkedin
Dengan module ini anda dapat menggunakan sumber autentifikasi LinkedIn. Jika anda mengaktifkan,
module ini, jangan lupa untuk mengaktifkan juga module oauth, karena jika tidak, anda akan
mendapatkan error seperti berikut :
simplesaml Fatal error: Class 'sspmod_oauth_Consumer' not found in...
Untuk informasi lebih lanjut, silahkan baca
http://simplesamlphp.org/docs/stable/authlinkedin:oauthlinkedin
authmyspace
Dengan module ini Anda dapat menggunakan MySpace sebagai sumber autentifikasi. Untuk informasi
selanjutnya, silahkan lihat baca http://simplesamlphp.org/docs/stable/authmyspace:oauthmyspace.
9
10. authorize
Modul ini menyediakan filter autorisasi yang berdasarkan regex khususnya untuk aplikasi-aplikasi yang
tidak secara tegas memisahkan antara autentifikasi dan autorisasi.
Untuk informasi lebih lanjut mengenai modul ini silahkan lihat,
http://simplesamlphp.org/docs/stable/authorize:authorize
authtwitter
Dengan menggunakan modul ini Anda dapat menggukana twitter sebagai sumber autentifikasi. Untuk
informasi lebih lanjut tentang module ini, silahkan kunjungi,
http://simplesamlphp.org/docs/stable/authtwitter:oauthtwitter
authwindowslive
Dengan module ini Anda dapat menggunakan Windows Live ID sebagai sumber autentifikasi. Untuk
informasi lebih lanjut tentang module ini, silahkan baca
http://simplesamlphp.org/docs/stable/authwindowslive:windowsliveid.
authX509
Dengan module ini, Anda dapat menggunakan X509 sebagai sumber autentifikasi. Untuk informasi
lebih lanjut, silahkan baca http://simplesamlphp.org/docs/stable/authX509:authX509
authYubiKey
Dengan menggunakan module ini, Anda dapat menggunakan authYubiKey sebagai sumber
autentifikasi. Untuk informasi lebih lanjut, silahkan baca
https://rnd.feide.no/2009/01/17/yubikey_authentication_module_in_simplesamlphp/
autotest
Module ini menyediakan antarmuka untuk melakukan testing otomatis dari berbagai sumber
autentifikasi. Untuk informasi lebih lanjut mengenai modul ini, silahkan kunjungi :
http://simplesamlphp.org/docs/stable/autotest:test
cas
Dengan menggunakan module ini, Anda dapat menggunakan CAS (Central Authentication Service)
sebagai sumber autentifikasi. Untuk informasi lebih lanjut mengenai modul ini silahkan baca :
http://simplesamlphp.org/docs/stable/cas:cas
10
11. casserver
Dengan menggunakan module ini, Anda dapat menggunakan simpleSAMLphp sebagai CAS Server,
untuk informasi lebih lanjut silahkan baca, http://bit.ly/xZUzaN
cdc
Module ini digunakan untuk mendukung apa yang disebut dengan Common Domain Cookie. Module
ini digunakan untuk mengeset dan membaca Common Domain Cookies.
consent
Modul consent (persetujuan) diiplementasikan sebagai filter pemroses autentifikasi. Modul ini dapat
dikonfigurasikan di file config.php global atau pada file metadata SP Remote atau IdP hosted.
Modul ini telah diaktifkan secara default, untuk mengetahui lebih lanjut mengenai modul consent,
silahkan baca http://simplesamlphp.org/docs/stable/consent:consent
consentAdmin
Modul consentAdmin merupakan addon bagi modul consent. Ini artinya, Anda tidak dapat
menggunakan modul consentAdmin tanpa mengaktifkan modul consent. Modul consentModule hanya
bekerja jika modul consent menggunakan database untuk menyimpan consent.
Untuk membaca informasi lebih jauh mengenai modul consentAdmin, silahkan baca,
http://simplesamlphp.org/docs/stable/consentAdmin:consentAdmin.
consentSimpleAdmin
Kurang lebih memiliki fungsi yang sama dengan consentAdmin, tetapi ketika penulis menulis
dokumentasi ini, apa saja perbedaan fitur di consentAdmin dan consentSimpleAdmin masih belum
dicoba.
core
Modul ini merupakan modul inti dari simpleSAMLphp yang tentu saja telah diaktifkan secara default.
Pada modul ini terdapat beberapa pemroses autentifikasi default, diantaranya adalah :
• core:AttributeAdd: Menambahkan attribut-attribut ke response.
http://simplesamlphp.org/docs/stable/core:authproc_attributeadd
• core:AttributeAlter: Mencari dan mengganti nilai sebuah attribut.
http://simplesamlphp.org/docs/stable/core:authproc_attributealter
• core:AttributeLimit: Membatasi attribute pada respons.
http://simplesamlphp.org/docs/stable/core:authproc_attributelimit
• core:AttributeMap: Mengubah nama dari attribut.
11
12. http://simplesamlphp.org/docs/stable/core:authproc_attributemap
• core:AttributeRealm: Membuat attribut dengan realm dari user.
http://simplesamlphp.org/docs/stable/core:authproc_attributerealm
• core:GenerateGroups: Menggenerate attribut group untuk
user.http://simplesamlphp.org/docs/stable/core:authproc_generategroups
• core:LanguageAdaptor: Mentransfer setingan bahasa dari IdP ke SP.
http://simplesamlphp.org/docs/stable/core:authproc_languageadaptor
• core:PHP: Memodifikasi attribut dengan kode PHP yang dibuat sendiri.
http://simplesamlphp.org/docs/stable/core:authproc_php
• core:ScopeAttribute: Menambahkan scope ke attribut.
http://simplesamlphp.org/docs/stable/core:authproc_scopeattribute
• core:ScopeFromAttribute: Membuat attribut baru yang berdasarkan pada scope pada attribut
yang berbeda. http://simplesamlphp.org/docs/stable/core:authproc_scopefromattribute
• core:StatisticsWithAttribute: Membuat statistic logentry.
http://simplesamlphp.org/docs/stable/core:authproc_statisticswithattribute
• core:TargetedID: Menggenerate attribute eduPersonTargetedID.
http://simplesamlphp.org/docs/stable/core:authproc_targetedid
• core:WarnShortSSOInterval: Memberikan peringatan jika user log in ke SP yang sama dalam
selang beberapa detik. http://simplesamlphp.org/docs/stable/core:authproc_warnshortssointerval
cron
...
discojuice
...
discopower
...
exampleattributeserver
...
exampleauth
...
12
13. expirycheck
...
InfoCard
...
ldap
Dengan modul ini Anda dapat melakukan autentifikasi terhadap server LDAP.
logpeek
...
memcacheMonitor
....
metaedit
...
metarefresh
...
modinfo
...
multiauth
Modul ini menyediakan sebuah metode agar user dapat memilih sumber autentifikasi dari daftar yang
ada.
oauth
...
openid
...
13
14. openidProvider
SimpleSAMLphp dapat berfungsi sebagai provider OpenID. Dengan ini, maka Anda dapat
mengintegrasikan OpenID ke IdP yang telah ada, atau menambahkan bridge antara OpenID dan SAML
2.0
portal
...
preparedwarning
..
radius
Dengan modul ini Anda dapat menggunakan server radius sebagai sumber autentifikasi.
saml
...
saml2debug
...
sanitycheck
...
smartnameattribute
...
sqlauth
...
statistics
...
themefeidernd
...
14
15. Mengaktifkan Module
Jika Anda ingin mengaktifkan beberapa module yang diinstall bersama simpleSAMLphp, tetapi secara
default dinonaktifkan, Anda harus membuat sebuah file kosong di direktori module yang tersebut yang
diberi nama enable.
# Mengaktifkan modul consent
cd modules
ls -l
cd consent
touch enable
Jika nanti Anda ingin menonaktifkan module, ubah nama file enable menjadi disable.
cd modules/consent
mv enable disable
Halaman web instalasi simpleSAMLphp
Setelah proses instalasi simpleSAMLphp, Anda dapat mengakses homepage instalasi Anda, yang berisi
beberapa informasi dan beberapa link untuk mengetes layanan yang ada. Jika mengikuti konfigurasi
diatas, maka simleSAMLphp dapat diakses dengan alamat :
https://service.example.org/simplesaml/
Tentu saja, link diatas tergantung dari konfigurasi Anda.
Peringatan
Jangan mengklik link yang ada, karena Anda belum mengeset apakah Anda ingin mengkonfigurasi
simpleSAMLphp akan menjadi Service Provider atau sebagai Identity Provider.
Mengaktifkan Modul Sanity Check
Untuk melakukan Sanity Check pada setup simpleSAML yang sudah kita lakukan, maka kita harus
meng-copy file konfigurasi Sanity Check :
(npsimplesamlasidp) cp
modules/sanitycheck/config-templates/config-sanitycheck.php config/
15
16. Memerika environment PHP Anda
Pada bagian bawah halaman instalasi ada beberapa tanda berwarna hijau. SimpleSAMLphp
menjalankan beberapa tes untuk melihat apakah prasyarat yang diperlukan dan direkomendasikan telah
dipenuhi. Jika ada tanda yang berwarna merah, Anda mungkin perlu menambahkan beberapa ekstensi
atau module ke PHP, seperti misalnya Anda memerlukan ekstensi LDAP PHP agar dapat menggunakan
module autentifikasi LDAP.
Langkah Selanjutnya
1. Menggunakan simpleSAMLphp sebagai SAML Service Provider
2. Menggunakan simpleSAMLphp sebagai Identitiy Provider
Dukungan
Beberapa situs komunitas simpleSAMLphp :
• homepage simpleSAMLphp, http://rnd.feide.no/simplesamlphp
• Daftar dokumentasi lengkap simpleSAMLphp berbahasa Inggris,
http://simplesamlphp.org/docs/
• Bergabung ke mailing list pengguna simpleSAMLphp,
http://rnd.feide.no/content/simplesamlphp-users-mailinglist
• Wiki simpleSAMLphp, https://ow.feide.no/simplesamlphp:start
Instalasi simpleSAMLphp di Lokasi Alternatif
Tip
Catatan
Referensi
1. simpleSAMLphp Installation and Configuration,
http://simplesamlphp.org/docs/stable/simplesamlphp-install
2. Authentication and identity services the 'Simple' way,
http://www.eifl.net/news/authentication-and-identity-services-simple-w
3. SMAL vs Shibboleth vs CAS, http://bit.ly/waznTY
4. Security Assertion Markup Language(SAML) V2.0 Technical Overview, http://bit.ly/84Sa1u
5. How To Create a SSL Certificate on Apache for Ubuntu 14.04,
16