Instalasi simpleSAMLphp sebagai Identity Provider (IdP)                                                       OpenThink La...
Pertimbangan Keamanan..............................................13Dukungan................................................
Berita dan Dokumentasi simpleSAMLphpUntuk melihat dokumentasi lengkap terkait simpleSAMLphp Anda dapat mengunjungi beberap...
openssl req -newkey rsa:2048 -new -x509 -days 3652 -nodes -outeofficeidp.crt -keyout negeripelangiidp.pemCertificate diata...
Mengkonfigurasi Sumber AutentifikasiModul exampleauthexampleauth:UserPassModul autentifikasi Exampleauth:UserPass merupaka...
array(    uid => array(student),    eduPersonAffiliation => array(member, student),),Atribut-atribut ini akan dikembalikan...
example-ldap => array(         ldap:LDAP,          // Give the user an option to save their username forfuture login attem...
// As an alternative to specifying a pattern for the usersDN, it is possible to          // search for the username in a s...
ldap:LDAPMulti...ldap:AttributeAddFromLDAP...ldap:AttributeAddUsersGroups..sqlauthsqlauth:SQLSumber autentifikasi sqlauth:...
fosuserbundle-sql => array(            sqlauth:SQL,            dsn => mysql:host=localhost;port=3306;dbname=npprofile,    ...
/*** SAML 2.0 IdP configuration for simpleSAMLphp.** See: https://rnd.feide.no/content/idp-hosted-metadata-reference*/$met...
Kalkun / Open Source Web Based SMS Management....phpBB3...CI-CMS2....MediaWiki....SugarCRM....Wordpress....Moodle....Googl...
Melakukan Ujicoba untuk LoginUntuk melakukan ujicoba apakah sumber autentifikasi yang baru saja dibuat, bukalah alamathttp...
Upcoming SlideShare
Loading in …5
×

Instalasi simpleSAMLphp sebagai Identity Provider (IdP)

2,021 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,021
On SlideShare
0
From Embeds
0
Number of Embeds
74
Actions
Shares
0
Downloads
53
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Instalasi simpleSAMLphp sebagai Identity Provider (IdP)

  1. 1. Instalasi simpleSAMLphp sebagai Identity Provider (IdP) OpenThink Labs Workshops Membangun Platform Single Sign On (SSO) berbasis Security Assertion Markup Language (SAML) Wildan Maulana <wildan.m@openthinklabs.com> Kamis 8 November 2012Daftar IsiBerita dan Dokumentasi simpleSAMLphp................................................................................................3Pendahuluan ..............................................................................................................................................3Mengaktifkan Fungsionalitas Identity Provider.........................................................................................3Menyiapkan SSL Signing Certificate.........................................................................................................3Sumber Autentifikasi..................................................................................................................................4Mengkonfigurasi Sumber Autentifikasi.....................................................................................................5 Modul exampleauth...............................................................................................................................5 exampleauth:UserPass......................................................................................................................5 exampleauth:Static............................................................................................................................6 Modul LDAP.........................................................................................................................................6 ldap:LDAP........................................................................................................................................6 ldap:LDAPMulti...............................................................................................................................9 ldap:AttributeAddFromLDAP .........................................................................................................9 ldap:AttributeAddUsersGroups........................................................................................................9 sqlauth...................................................................................................................................................9 sqlauth:SQL......................................................................................................................................9 saml:SP................................................................................................................................................10 authfacebook:Facebook.......................................................................................................................10 authtwitter:Twitter...............................................................................................................................10Mengkonfigurasi Metadata untuk SAML 2.0 IdP....................................................................................10 Mengkonfigurasi SAML 2.0 IdP Hosted Metadata.............................................................................10 Mengkonfigurasi SAML 2.0 SP Remote Metadata.............................................................................11 Kalkun / Open Source Web Based SMS Management...................................................................12 phpBB3...........................................................................................................................................12 CI-CMS2........................................................................................................................................12 MediaWiki......................................................................................................................................12 SugarCRM .....................................................................................................................................12 Wordpress.......................................................................................................................................12 Moodle............................................................................................................................................12 Google Apps...................................................................................................................................12Melakukan Ujicoba untuk Login ...........................................................................................................13 1
  2. 2. Pertimbangan Keamanan..............................................13Dukungan.................................................................................................................................................13 2
  3. 3. Berita dan Dokumentasi simpleSAMLphpUntuk melihat dokumentasi lengkap terkait simpleSAMLphp Anda dapat mengunjungi beberapasumber berikut : • Daftar lengkap Dokumentasi simpleSAMLphp, http://simplesamlphp.org/docs • Berita terbaru terkait simpleSAMLphp, https://rnd.feide.no/category/simplesamlphp/ • Homepage simpleSAMLphp, http://rnd.feide.no/simplesamlphpPendahuluanArtikel ini mengasumsikan kalau Anda telah membaca manual instalasi simpleSAMLphp dan telahmenginstall versi terbaru simpleSAMLphp di server Anda.Pada contoh kali ini Kita akan menyiapkan server ini sebagai IdP untuk berbagai aplikasi yang akankita integrasikan nanti : http://idp.negeripelangi.org.Mengaktifkan Fungsionalitas Identity ProviderEdit config/config.php, dan Aktifkan SAML 2.0 IdP :enable.saml20-idp => true,enable.shib13-idp => false,Menyiapkan SSL Signing CertificateUntuk tujuan percobaan, Anda dapat melewati bagian ini, dan menggunakan certificate default yangsudah ada.Untuk sistem yang sudah produktif, Anda harus membuat sendiri certificate untuk IdP Anda. Peringatan Paket software simpleSAMLphp memiliki certificate yang dapat Anda gunakan untuk tujuan percobaan, tetapi tentu saja, jangan sekali-kali menggunakan certificate ini pada sistem yang sudah produktif karena private key dari certificate ini juga disertakan didalam paket software simpleSAMLphp dan dapat didownload oleh siapa saja.Berikut ini adalah sebuah contoh perintah openssl untuk membuat key baru dan selfsignedcertificate yang akan digunakan untuk men-signing SAML messages : 3
  4. 4. openssl req -newkey rsa:2048 -new -x509 -days 3652 -nodes -outeofficeidp.crt -keyout negeripelangiidp.pemCertificate diatas akan valid untuk 10 tahun.Catatan : simpleSAMLphp hanya dapat bekerja dengan certificate RSA dan DSA.Sumber AutentifikasiLangkah selanjutnya adalah mengkonfigurasi bagaimana cara user melakukan autentifikasi ke IdPAnda. Berbagai modul di direktori modules/ menyediakan berbagai metode untuk melakukanautentifikasi user Anda. Berikut ini adalah ulasan sekilas tentang beberapa metode yang akan kita cobagunakan :exampleauth:UserPass Melakukan Autentifikasi terhadap daftar username dan password.exampleauth:Static Secara otomatis log in sebagai user dengan attribute-attribute yang telah didefinisikan.ldap:LDAP Melakukan autentifikasi terhadap server LDAP.ldap:LDAPMulti Melakukan autentifikasi terhadap sebuah server LDAP dari beberap server LDAP yang telahdidaftarkansqlauth:SQL Melakukan autentifikasi terhadap RDBMSsaml:SP Melakukan autentifikasi terhadap SAML IdP.authfacebook:Facebook Melakukan autentifikasi dengan Facebook ID.authtwitter:Twitter Melakukan autentifikasi dengan akun Twitter Anda via API OAuth Twitter.Pada konfigurasi di dokumentasi ini, Kita akan menggunakan modul autentifikasi sqlauth:SQL. 4
  5. 5. Mengkonfigurasi Sumber AutentifikasiModul exampleauthexampleauth:UserPassModul autentifikasi Exampleauth:UserPass merupakan bagian dari modul exampleauth. Modulesecara default tidak diaktifkan, jadi sebelum menggunakannya, Anda harus mengaktifkannya terlebihdahulu. Untuk mengaktifkannya, buat file bernama enable pada direktori modules/exampleauth.Di Linux Anda dapat melakukannya dengan menggunakan perintah berikut :touch modules/exampleauth/enableLangkah selanjutnya adalah membuat authentication source (sumber autentifikasi) untuk modul ini.Sumber autentifikasi adalah sebuah module autentifikasi dengan konfigurasi khusus. Setiap sumberautentifikasi memiliki sebuah nama, yang digunakan sebagai rujukan ketika melakukan konfigurasipada IdP. Konfigurasi untuk sumber autentifikasi dapat ditemukan di config/authsources.php.Berikut adalah contoh konfigurasi sumber autentifikasi yang menggunakan moduleexampleauth:UserPass :<?php$config = array( example-userpass => array( exampleauth:UserPass, student:studentpassword => array( uid => array(student), eduPersonAffiliation => array(member, student), ), employee:employeepassword => array( uid => array(employee), eduPersonAffiliation => array(member, employee), ), ),);Konfigurasi ini membuat dua buah user, yaitu student dan employee dengan password masing-masing,studentpassword dan employeepassword. Username dan password disimpan sebagai index dari sebuaharray sedangkan attribute setiap user dikonfigurasi dalam bentuk array dimana index array tersebutmenjadi referensinya. Untuk user student, atribut-atribut ini adalah : 5
  6. 6. array( uid => array(student), eduPersonAffiliation => array(member, student),),Atribut-atribut ini akan dikembalikan oleh IdP ketika user login.exampleauth:StaticModul autentifikasi exampleauth:Static merupakan bagian dari modul exampleauth. Berikut adalahcontoh sumber autentifikasi yang menggunakan exampleauth:Static : example-static => array( exampleauth:Static, uid => array(testuser), eduPersonAffiliation => array(member, employee), cn => array(Test User), ),Dengan module ini, kita otomatis login dengan atribut-atribute yang telah ditentukan.Modul LDAPModul LDAP menyediakan metode untuk melakukan autentifikasi terhadap server LDAP. Pada modulini rerdapat dua buah modul autentifikasi dan dua buah process filters (filter pemroses). • ldap:LDAP Melakukan autentifikasi ke sebuah server LDAP • ldap:LDAPMulti Pengguna boleh memilih satu dari beberapa sumber LDAP sebagai sumber autentifikasi • ldap:AttributeAddFromLDAP Menambahkan sebuah nilai atribut dari LDAP ke request • ldap:AttributeAddUsersGroups Menambahkan sebuah atribute ke semua user yang menjadi anggota group tertentu.ldap:LDAPModul ini digunakan jika Anda memiliki sebuah organisasi dengan sebuah server LDAP tunggal yangmenyimpan seluruh data user. Untuk membuat sumber autentifikasi LDAP, bukaconfig/authsources.php, kemudian tambahkan entri berikut : 6
  7. 7. example-ldap => array( ldap:LDAP, // Give the user an option to save their username forfuture login attempts // And when enabled, what should the default be, to savethe username or not //remember.username.enabled => FALSE, //remember.username.checked => FALSE, // The hostname of the LDAP server. hostname => ldap.example.org, // Whether SSL/TLS should be used when contacting the LDAPserver. enable_tls => FALSE, // Whether debug output from the LDAP library should beenabled. // Default is FALSE. debug => FALSE, // The timeout for accessing the LDAP server, in seconds. // The default is 0, which means no timeout. timeout => 0, // Which attributes should be retrieved from the LDAPserver. // This can be an array of attribute names, or NULL, inwhich case // all attributes are fetched. attributes => NULL, // The pattern which should be used to create the users DNgiven the username. // %username% in this pattern will be replaced with theusers username. // // This option is not used if the search.enable option isset to TRUE. dnpattern => uid=%username%,ou=people,dc=example,dc=org, 7
  8. 8. // As an alternative to specifying a pattern for the usersDN, it is possible to // search for the username in a set of attributes. This isenabled by this option. search.enable => FALSE, // The DN which will be used as a base for the search. // This can be a single string, in which case only that DNis searched, or an // array of strings, in which case they will be searched inthe order given. search.base => ou=people,dc=example,dc=org, // The attribute(s) the username should match against. // // This is an array with one or more attribute names. Anyof the attributes in // the array may match the value the username. search.attributes => array(uid, mail), // The username & password the simpleSAMLphp should bind tobefore searching. If // this is left as NULL, no bind will be performed beforesearching. search.username => NULL, search.password => NULL, // If the directory uses privilege separation, // the authenticated user may not be able to retrieve // all required attribures, a privileged entity is required // to get them. This is enabled with this option. priv.read => FALSE, // The DN & password the simpleSAMLphp should bind tobefore // retrieving attributes. These options are required if // priv.read is set to TRUE. priv.username => NULL, priv.password => NULL, ),... 8
  9. 9. ldap:LDAPMulti...ldap:AttributeAddFromLDAP...ldap:AttributeAddUsersGroups..sqlauthsqlauth:SQLSumber autentifikasi sqlauth:SQL adalah bagian dari module sqlauth. Modul ini sudah diaktifkansecara default. Jadi yang harus Anda lakukan tinggal mendefinisikan sumber autentifikasi diconfig/authsources.php.Skema database yang digunakan adalah skema database yang digunakan pada FOSUserBundle disymfony2 :CREATE TABLE negeripelangi_user (id INT AUTO_INCREMENT NOT NULL,username VARCHAR(255) NOT NULL, username_canonical VARCHAR(255) NOTNULL, email VARCHAR(255) NOT NULL, email_canonical VARCHAR(255) NOTNULL, enabled TINYINT(1) NOT NULL, salt VARCHAR(255) NOT NULL,password VARCHAR(255) NOT NULL, last_login DATETIME DEFAULT NULL,locked TINYINT(1) NOT NULL, expired TINYINT(1) NOT NULL, expires_atDATETIME DEFAULT NULL, confirmation_token VARCHAR(255) DEFAULT NULL,password_requested_at DATETIME DEFAULT NULL, roles LONGTEXT NOT NULLCOMMENT (DC2Type:array), credentials_expired TINYINT(1) NOT NULL,credentials_expire_at DATETIME DEFAULT NULL, UNIQUE INDEXUNIQ_1EC5827A92FC23A8 (username_canonical), UNIQUE INDEXUNIQ_1EC5827AA0D96FBF (email_canonical), PRIMARY KEY(id)) DEFAULTCHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;Buka file config/authsources.php dan tambahkan konfigurasi berikut : 9
  10. 10. fosuserbundle-sql => array( sqlauth:SQL, dsn => mysql:host=localhost;port=3306;dbname=npprofile, username => npprofile, password => rahasia!!, query => SELECT username, email FROM negeripelangi_user WHEREusername = :username AND password = :password, ),Sesuaikan entri username dan password sesuai dengan yang Anda telah buat.Khusus untuk sumber autentifikasi sqlauth:SQL dengan FOSUserBundle dokumentasinya dapat dibacadi alamat :http://workshop.openthinklabs.com/resources/-federated-identity/membangun-platform-single-sign-on-sso-berbasis-security-assertion-markup-language-saml/artikel/sumber-autentifikasi/sqlauth-sqlsaml:SP...authfacebook:Facebook...authtwitter:Twitter...Mengkonfigurasi Metadata untuk SAML 2.0 IdPJika Anda ingin menyiapkan SAML 2.0 Idp untuk sebuah aplikasi yang ingin Anda integrasikan, makaAnda harus mengkofigurasi dua buah file metadata, yaitu : saml20-idp-hosted.php andsaml20-sp-remote.php.Mengkonfigurasi SAML 2.0 IdP Hosted MetadataBerikut ini adalah konfigurasinya :<?php 10
  11. 11. /*** SAML 2.0 IdP configuration for simpleSAMLphp.** See: https://rnd.feide.no/content/idp-hosted-metadata-reference*/$metadata[__DYNAMIC:1__] = array( /* * The hostname of the server (VHOST) that will use this SAML entity. * * Can be __DEFAULT__, to use this entry by default. */ host => __DEFAULT__, /* X.509 key and certificate. Relative to the cert directory. */ privatekey => server.pem, certificate => server.crt, /* * Authentication source to use. Must be one that is configured in * config/authsources.php. */ auth => fosuserbundle-sql,);Mengkonfigurasi SAML 2.0 SP Remote MetadataPada file (saml20-sp-remote.php), Anda akan menambahkan tambahan entri konfigurasi untuk E-Office. Berikut adalah contoh entri konfigurasinya : 11
  12. 12. Kalkun / Open Source Web Based SMS Management....phpBB3...CI-CMS2....MediaWiki....SugarCRM....Wordpress....Moodle....Google Apps... 12
  13. 13. Melakukan Ujicoba untuk LoginUntuk melakukan ujicoba apakah sumber autentifikasi yang baru saja dibuat, bukalah alamathttp://idp.negeripelangi.wm, maka Anda akan mendapatkan halaman seperti berikut :...Masukkan password untuk manajemen IdP. Maka Anda akan mendapatkan halaman seperti berikut :...Buka tab Autentification, pilih default-sp, dan masukkan username dan password yang terdapat disumber autentifikasi yang Anda gunakan, jika berhasil maka akan terlihat tampilan seperti berikut :Jika sudah berhasil, maka IdP Anda telah siap untuk digunakan.Pertimbangan KeamananUntuk lebih meningkatkan keamanan, pastikan IdP Anda menggunakan HTTPS (SSL), dan pastikanAnda telah mengganti certificate default yang disertakan dalam simpleSAMLphp dengan certificateyang baru.DukunganJika Anda memerlukan bantuan dalam menyiapkan simpleSAMLphp sebagai IdP Anda dapat bertanyadi komunitas simpleSAMLphp, http://rnd.feide.no/content/simplesamlphp-users-mailinglist 13

×