Upload
wildan-maulana
View
601
Download
7
Embed Size (px)
Citation preview
Instalasi dan Konfigurasi simpleSAMLphp OpenThink Labs Workshops
Membangun Platform Single Sign On (SSO) berbasis Security Assertion Markup Language (SAML)
Wildan Maulana <[email protected]>
Senin 27 April 2015
Daftar IsiDokumentasi dan Berita terkait simpleSAMLphp.....................................................................................3Versi Pengembangan..................................................................................................................................3Prasyarat.....................................................................................................................................................3Download dan Instalasi simpleSAMLphp.................................................................................................3Melakukan upgrade dari versi sebelumnya ke versi terbaru simpleSAMLphp.........................................4
Mengupgrade File-File Konfigurasi......................................................................................................4Mengupgrade File-File Metadata..........................................................................................................5
Mengkonfigurasi Apache...........................................................................................................................5Mengkonfigurasi simpleSAMLphp : config.php.......................................................................................6Mengkonfigurasi PHP................................................................................................................................6
Mengirim e-mail dari PHP....................................................................................................................6Module-Module Bawaan yang Tersedia....................................................................................................7
adfs........................................................................................................................................................7aggregator..............................................................................................................................................7aggregator2............................................................................................................................................7aselect....................................................................................................................................................7authcrypt................................................................................................................................................7authfacebook.........................................................................................................................................7authlinkedin...........................................................................................................................................8authmyspace..........................................................................................................................................8authorize................................................................................................................................................8authtwitter..............................................................................................................................................8authwindowslive....................................................................................................................................8authX509...............................................................................................................................................8authYubiKey..........................................................................................................................................8autotest...................................................................................................................................................9cas..........................................................................................................................................................9casserver................................................................................................................................................9cdc.........................................................................................................................................................9consent...................................................................................................................................................9consentAdmin........................................................................................................................................9
1
consentSimpleAdmin............................................................................................................................9core......................................................................................................................................................10cron......................................................................................................................................................10discojuice.............................................................................................................................................11discopower...........................................................................................................................................11exampleattributeserver........................................................................................................................11exampleauth.........................................................................................................................................11expirycheck..........................................................................................................................................11InfoCard...............................................................................................................................................11ldap......................................................................................................................................................11logpeek................................................................................................................................................11memcacheMonitor...............................................................................................................................11metaedit...............................................................................................................................................11metarefresh..........................................................................................................................................11modinfo...............................................................................................................................................12multiauth..............................................................................................................................................12oauth....................................................................................................................................................12openid..................................................................................................................................................12openidProvider....................................................................................................................................12portal....................................................................................................................................................12preparedwarning..................................................................................................................................12radius...................................................................................................................................................12saml.....................................................................................................................................................12saml2debug..........................................................................................................................................12sanitycheck..........................................................................................................................................13smartnameattribute..............................................................................................................................13sqlauth.................................................................................................................................................13statistics...............................................................................................................................................13themefeidernd......................................................................................................................................13
Mengaktifkan Module..............................................................................................................................13Halaman web instalasi simpleSAMLphp.................................................................................................13
Peringatan............................................................................................................................................14Mengaktifkan Modul Sanity Check....................................................................................................14Memerika environment PHP Anda.....................................................................................................14
Langkah Selanjutnya................................................................................................................................14Dukungan ................................................................................................................................................14Instalasi simpleSAMLphp di Lokasi Alternatif.......................................................................................15
Tip........................................................................................................................................................15Catatan.................................................................................................................................................15
Referensi .................................................................................................................................................15
2
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 danzlib
◦ 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
Masuklah ke direktori dimana Anda ingin menginstall simpleSAMLphp, dan ekstraklah file arsip yang baru saja Anda download :
cd /opttar xzf simplesamlphp-1.x.y.tar.gzmv 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
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 MetadataKemungkinan 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 ApacheContoh 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 beberapacara 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
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin [email protected]
ServerName idp.negeripelangi.org
ServerAlias www.idp.negeripelangi.org
DocumentRoot /home/www/idp
<Directory /home/www/idp
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/idp_error.log
CustomLog ${APACHE_LOG_DIR}/idp_access.log combined
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
6
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.phpAda 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
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' => '[email protected]',
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
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
authorize
Modul ini menyediakan filter autorisasi yang berdasarkan regex khususnya untuk aplikasi-aplikasi yangtidak 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
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
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
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
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 SAML2.0
portal
...
preparedwarning
..
radius
Dengan modul ini Anda dapat menggunakan server radius sebagai sumber autentifikasi.
saml
...
saml2debug
...
sanitycheck
...
smartnameattribute
...
sqlauth
...
statistics
...
themefeidernd
...
14
Mengaktifkan ModuleJika 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 simpleSAMLphpSetelah proses instalasi simpleSAMLphp, Anda dapat mengakses homepage instalasi Anda, yang berisibeberapa 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
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 menggunakanmodule autentifikasi LDAP.
Langkah Selanjutnya1. 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/waznTY4. 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
https://www.digitalocean.com/community/tutorials/how-to-create-a-ssl-certificate-on-apache-for-ubuntu-14-04
17