pengamanan web service dengan otentikasi soap web service... · web viewkeamanan informasi memiliki...

21
Pengamanan Web Service Dalam bab ini kita akan membahas tentang teknik pengamanan terhadap web service yang kita bangun. Sebelum kita membahas lebih lanjut tentang teknik pengamanan web service, sebaiknya kita memahami beberapa konsep yang mendasarinya. Keamanan Informasi (Information Security) Web service akan selalu berhubungan dengan informasi. Keberadaan web service hanyalah sebagai alternatif yang berfungsi sebagai salah satu alat bantu dalam proses pengolahan informasi. Sedangkan proses pengolahan informasi itu sendiri selalu berkaitan dengan keamanan. Keamanan informasi memiliki sasaran untuk memelihara kerahasiaan (confidentiality), integritas (integrity) dan ketersediaan informasi (availability) dalam suatu organisasi, dan dicapai dengan kombinasi komponen yang baik, desain arsitektural yang baik, serta perlakuan yang teliti dalam pusat pengelolaannya. Keamanan informasi bertanggung jawab pada tiga hal, yaitu: Confidentiality, adalah suatu jaminan bahwa informasi hanya dapat digunakan secara bersama oleh organisasi atau orang yang diberi hak.

Upload: truongdung

Post on 18-Jul-2019

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Pengamanan Web Service Dengan Otentikasi SOAP Web Service... · Web viewKeamanan informasi memiliki sasaran untuk memelihara kerahasiaan (confidentiality), integritas (integrity)

Pengamanan Web Service

Dalam bab ini kita akan membahas tentang teknik pengamanan terhadap web

service yang kita bangun. Sebelum kita membahas lebih lanjut tentang teknik

pengamanan web service, sebaiknya kita memahami beberapa konsep yang

mendasarinya.

Keamanan Informasi (Information Security)Web service akan selalu berhubungan dengan informasi. Keberadaan web service

hanyalah sebagai alternatif yang berfungsi sebagai salah satu alat bantu dalam proses

pengolahan informasi. Sedangkan proses pengolahan informasi itu sendiri selalu

berkaitan dengan keamanan.

Keamanan informasi memiliki sasaran untuk memelihara kerahasiaan

(confidentiality), integritas (integrity) dan ketersediaan informasi (availability) dalam

suatu organisasi, dan dicapai dengan kombinasi komponen yang baik, desain arsitektural

yang baik, serta perlakuan yang teliti dalam pusat pengelolaannya.

Keamanan informasi bertanggung jawab pada tiga hal, yaitu:

Confidentiality, adalah suatu jaminan bahwa informasi hanya dapat digunakan

secara bersama oleh organisasi atau orang yang diberi hak.

Integrity, adalah jaminan bahwa informasi adalah asli dan lengkap serta dapat

dipercaya ketepatan tujuannya.

Availability, adalah jaminan bahwa sistem yang bertanggung jawab pada

pengiriman, penyimpanan dan pengolahan informasi dapat diakses ketika

dibutuhkan.

Page 2: Pengamanan Web Service Dengan Otentikasi SOAP Web Service... · Web viewKeamanan informasi memiliki sasaran untuk memelihara kerahasiaan (confidentiality), integritas (integrity)

Mekanisme Keamanan InformasiDikarenakan tidak ada peralatan tunggal yang dapat memelihara integritas

informasi, maka penting untuk menempatkan empat mekanisme keamanan dalam struktur

kinerja yang berlapis. Empat mekanisme tersebut adalah:

Otentikasi user

Enkripsi data

Penyaringan paket jaringan

Kendali akses fisik

Prinsip keamanan yang baik adalah “defense in depth” atau pertahanan yang

sungguh-sungguh mendalam. Jangan pernah bersandar pada mekanisme keamanan

tunggal dan meletakkannya dalam desain berlapis sehingga seorang hacker dapat masuk

melalui salah satu lapisan dan melakukan serangannya.

Sebagai contoh, penyaringan paket yang menghalangi akses dari alamat jaringan

luar dapat mencegah akses dari seorang penyerang yang telah mencuri password

otentikasi. Enkripsi data dapat melindungi kerahasiaan informasi bahkan ketika

penyerang menyadap kabel jaringan dengan cara mengalahkan mekanisme kendali akses

fisik.

Otentikasi user, adalah mekanisme yang dirancang untuk mengidentifikasi user

secara unik, menempatkan user pada hak akses informasi yang sesuai, dan menjejaki

aktifitas mereka. Otentikasi pada umumnya dilakukan dengan meminta kunci akses

(dapat berupa username, password, informasi biometric, kartu pengenal, ataupun smart

card) dan menentukan hak akses mereka.

Enkripsi data, adalah mekanisme yang melakukan proses penyandian data untuk

mencegah pihak yang tidak diberi hak untuk melihat, mengamati, dan memodifikasi

informasi. Mekanisme ini memiliki sasaran untuk melindungi integritas dan kerahasiaan

informasi, bahkan ketika data yang disandikan itu melewati jalur media yang tidak aman

(seperti internet). Enkripsi data bekerja sedemikian sehingga hanya penerima yang dituju

yang dapat membaca data tersebut dengan menggunakan suatu algoritma dan kunci

enkripsi. Sebagai contoh, suatu sesi terminal remote yang menggunakan secure-shell SSH

melakukan enkripsi data dengan menggunakan algoritma DES.

Page 3: Pengamanan Web Service Dengan Otentikasi SOAP Web Service... · Web viewKeamanan informasi memiliki sasaran untuk memelihara kerahasiaan (confidentiality), integritas (integrity)

Penyaringan paket jaringan, adalah mekanisme pengamanan pada level

jaringan yang dapat dilakukan pada router dan gateway dengan menganalisis header dari

paket IP, kemudian mengizinkan atau menolak pengiriman paket berdasarkan pada

alamat sumber, alamat tujuan, tipe protokol, nomor port TCP, panjang paket dan

sebagainya. Mekanisme ini berguna untuk mencegah akses bahkan sebelum penyerang

dihadapkan pada otentikasi terhadap sistem yang dituju. Firewall adalah alat yang

melakukan penyaringan paket dan melakukan analisis terhadap paket tersebut untuk

menentukan apakah diizinkan atau ditolak. Gambar di bawah ini mengilustrasikan

mekanisme pengamanan paket pada level jaringan:

Gambar Sebuah firewall pada level jaringan

Kendali akses fisik, adalah mekanisme pengamanan yang paling mendasar.

Mekanisme ini mencegah pencurian data yang dilakukan penyerang dengan cara

mengakses langsung pada peralatan fisik. Sebelum mengeluarkan banyak biaya untuk

mengamankan data terhadap ancaman yang berasal dari jaringan, pastikan untuk

mengendalikan keamanan akses fisik ke server kritis dan infrastruktur jaringan.

Page 4: Pengamanan Web Service Dengan Otentikasi SOAP Web Service... · Web viewKeamanan informasi memiliki sasaran untuk memelihara kerahasiaan (confidentiality), integritas (integrity)

Otentikasi SOAPTeknik pengamanan web service dengan menggunakan otentikasi SOAP

merupakan metode yang cukup sederhana. Proses otentikasi SOAP dilakukan dengan

cara menyisipkan suatu informasi pada pesan SOAP yang menggambarkan bahwa suatu

pesan SOAP memiliki keaslian tersendiri yang bersifat unik dari suatu client tertentu

yang meminta layanan. Informasi yang disisipkan ini berisi data otentikasi dari client

yang mengajukan request. Informasi tersebut merupakan data otentikasi SOAP request

yang berupa username dan password.

Berikut ini adalah langkah-langkah yang diterapkan dalam proses otentikasi

SOAP:

1. Client menyusun sebuah paket SOAP request dalam sebuah SOAP envelope

2. Client menyisipkan sebuah data informasi otentikasi ke dalam struktur SOAP request

tersebut

3. Client mengirimkan SOAP request melalui protokol HTTP ke aplikasi server (web

service provider)

4. Server menerima pesan SOAP resquest kemudian melakukan parsing

5. Server mendapatkan data informasi otentikasi dari pesan SOAP request

6. Server mencocokkan data informasi otentikasi dengan database server

7. Apabila data informasi otentikasi sesuai, maka server menangani request, jika tidak

server akan menolak request

8. Server mengirimkan pesan SOAP response kepada client berikut informasi tentang

status otentikasi.

Dalam menerapkan otentikasi SOAP, aplikasi server membutuhkan suatu

database yang berfungsi untuk menyimpan data-data semua client yang berhak untuk

mengakses layanan yang tersedia. Dengan demikian hanya client yang terdaftar dalam

database tersebut yang berhak untuk mengkonsumsi layanan. Teknik pengamanan ini

bertujuan untuk mencegah para hacker mengirimkan SOAP request yang berisi instruksi-

instruksi ataupun data yang dapat merugikan server.

Page 5: Pengamanan Web Service Dengan Otentikasi SOAP Web Service... · Web viewKeamanan informasi memiliki sasaran untuk memelihara kerahasiaan (confidentiality), integritas (integrity)

Bagaimana Otentikasi SOAP Dilakukan?Selanjutnya kita akan membahas tentang bagaimana otentikasi SOAP ini

dilakukan. Sebelum membahasnya kita perhatikan kembali struktur standar dari suatu

pesan SOAP:

Gambar Struktur paket pesan SOAP

Pada struktur pesan SOAP di atas, kita melihat terdapat dua elemen utama SOAP

yaitu Header dan Body. Elemen header merupakan elemen yang bersifat opsional yang

berisi data-data tambahan yang dapat digunakan oleh server untuk keperluan khusus.

Elemen body merupakan elemen pokok yang harus ada dalam suatu pesan SOAP, elemen

ini berisikan muatan data pesan induk dari SOAP itu sendiri.

Ada 2 alternatif tempat untuk meletakkan data informasi otentikasi pesan SOAP,

yaitu pada elemen header atau pada elemen body. Apabila proses penyusunan suatu

pesan SOAP membutuhkan mekanisme pengkodean isi (misalnya enkripsi ataupun

kompresi) terhadap pesan yang terdapat dalam elemen body, maka tidak mungkin

meletakkan data otentikasi ke dalam elemen body SOAP. Sebagai contoh, jika suatu

server menerima pesan SOAP yang elemen body-nya telah dienkripsi atau dikompresi,

nantinya server perlu mengetahui data informasi otentikasi yang dipakai untuk

menentukan status keotentikan pesan SOAP tersebut. Tidak mungkin menanam informasi

mengenai keotentikan suatu pesan SOAP ke dalam elemen body karena isinya sendiri

akan dienkripsi atau dikompresi. Maka solusinya adalah lebih tepat untuk menempatkan

informasi otentikasi ke dalam elemen header pesan SOAP.

<?xml version="1.0" encoding="ISO-8859-1"?><SOAP-ENV:Envelope>

<SOAP-ENV:Header>----------

</SOAP-ENV:Header>

<SOAP-ENV:Body>----------

</SOAP-ENV:Body>

</SOAP-ENV:Envelope>

Header

Body

Page 6: Pengamanan Web Service Dengan Otentikasi SOAP Web Service... · Web viewKeamanan informasi memiliki sasaran untuk memelihara kerahasiaan (confidentiality), integritas (integrity)

Terdapat beberapa penggunaan terhadap elemen header SOAP, beberapa di

antaranya adalah:

Otentikasi. Server dapat meminta pengirim untuk mengotentikkan dirinya sendiri

sebelum pesan diproses.

Informasi pernyataan keamanan. Jika penerima memerlukan jaminan bahwa isi

pesan belum berubah, pengirim dapat menandatangani tubuh pesan secara digital

dan menempatkan hasilnya ke dalam header.

Informasi routing. Jika pesan tersebut perlu dirunut ke banyak tujuan, tujuan dan

urutannya dapat dimasukkan ke dalam header.

Transaksi. Penerima mungkin menjalankan sejumlah aksi dalam lingkup

transaksi pengirim.

Informasi pembayaran. Jika penerima pesan menyediakan layanan ke client

berdasarkan biaya per pemakaian, informasi yang diperlukan untuk menarik

pembayaran dapat ditanamkan dalam header-nya.

Setelah kita memahami dasar-dasar pemahaman tentang proses otentikasi pesan

SOAP, sekarang kita akan membahas tentang teknik pemrograman yang menerapkan

kemanan web service dengan menggunakan otentikasi SOAP.

NuSOAP toolkit sampai pada versi terakhir (v1.9.5) pada saat buku ini ditulis

belum menyediakan fasilitas otentikasi SOAP. Oleh karena itu kita akan melakukan

sedikit modifikasi terhadap class library NuSOAP dengan menambahkan satu fungsi

untuk menyisipkan data informasi otentikasi ke dalam elemen header SOAP dan

beberapa penambahan rutin program dalam class tersebut.

Fungsi yang digunakan untuk menyisipkan data informasi otentikasi ini ke dalam

header SOAP diletakkan pada class “soapclient”. Fungsi tersebut diberi nama

“SetSOAPSecurityHeader”, berikut ini adalah kode programnya:

function SetSOAPSecurityHeader ($username=false,$password=false){

$auth = ("<wsse:Security>"."<wsse:UsernameToken>"."<wsse:Username>$username</wsse:Username>"."<wsse:Password>$password</wsse:Password>"."</wsse:UsernameToken>""</wsse:Security>");

return $auth;}

Page 7: Pengamanan Web Service Dengan Otentikasi SOAP Web Service... · Web viewKeamanan informasi memiliki sasaran untuk memelihara kerahasiaan (confidentiality), integritas (integrity)

Gambar Fungsi untuk menyisipkan header security pesan SOAP

Data informasi otentikasi di atas memiliki root elemen yang diberi nama

“UsernameToken”. Sub elemen “username” dan “password” digunakan untuk

menempatkan item data otentikasi pesan SOAP. String otentikasi yang dihasilkan

kemudian disisipkan kedalam header pesan SOAP yang akan dikirim. Sehingga paket

pesan SOAP yang akan dikirim akan menghasilkan format paket SOAP berikut ini:

Gambar Format string elemen header SOAP

Perhatikan kode di atas, elemen header yang berisi data informasi otentikasi

disisipkan ke dalam pesan SOAP.

Enkripsi SOAP

'<?xml version="1.0" encoding="'.$this->soap_defencoding .'"?'. '>'.'<SOAP-ENV:Envelope'.$ns_string. '>'.

'<SOAP-ENV:Header>'.'<wsse:Security>'.

'<wsse:UsernameToken>'.'<wsse:Username>$username</wsse:Username>'.'<wsse:Password>$password</wsse:Password>'.

'</wsse:UsernameToken>'.'</wsse:Security>'.

'</SOAP-ENV:Header>'.

'<SOAP-ENV:Body>'.'</SOAP-ENV:Body>'.'</SOAP-ENV:Envelope>'

Header SOAP yang berisi data informasi otentikasi

Page 8: Pengamanan Web Service Dengan Otentikasi SOAP Web Service... · Web viewKeamanan informasi memiliki sasaran untuk memelihara kerahasiaan (confidentiality), integritas (integrity)

Web service sebagai tool alternatif dalam sistem terdistribusi melakukan

kinerjanya dengan menggunakan SOAP dalam mekanisme HTTP GET dan HTTP POST.

Pada prinsipnya SOAP merupakan sebuah teks murni dalam format XML yang seringkali

berisikan informasi-informasi yang sensitif yang harus dilindungi. Satu-satunya cara

untuk melindungi data tersebut adalah dengan melakukan penyandian (enkripsi) terhadap

informasi tersebut.

Pada penjelasan sebelumnya, telah dijelaskan tentang mekanisme keamanan yang

diterapkan dengan menambahkan data informasi otentikasi ke dalam elemen header

SOAP. Selanjutnya kita akan membahas sebuah mekanisme keamanan web service lebih

lanjut, yaitu dengan melakukan enkripsi baik pada elemen header maupun elemen body

pada struktur pesan SOAP.

Bagaimana Enkripsi SOAP Dilakukan?Sebelum membahas tentang bagaimana enkripsi SOAP dilakukan, perhatikanlah

dua contoh paket SOAP berikut ini:

Gambar Paket pesan SOAP yang tidak dienkripsi

<?xml version="1.0" encoding="ISO-8859-1"?><SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body>

<ns1:contactResponse xmlns:ns1="urn:contactServerAuth"><output xsi:type="SOAP-ENC:Array" SOAP-

ENC:arrayType="unnamed_struct_use_soapval[3]"><item>

<name xsi:type="xsd:string">Yadi Utama</name><company xsi:type="xsd:string">PT. Gamatechno</company><address xsi:type="xsd:string">Jl. Cik Di Tiro 34, Yogyakarta</address><phone xsi:type="xsd:string">081328462499</phone><email xsi:type="xsd:string">[email protected]</email>

</item></output>

</ns1:contactResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>

<?xml version="1.0" encoding="ISO-8859-1"?><SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body>

<ns1:contact_detailResponse xmlns:ns1="urn:contactServerAuth"><output xsi:type="SOAP-ENC:Array" SOAP-

ENC:arrayType="unnamed_struct_use_soapval[1]"><item>

<name xsi:type="xsd:string">

VFpSPQYzAmhacwJSBncKZw47BmZWegh1XVpVfAMYBGkEPlFxAn9XdFoeByxVGwxvXGlUew==

</name><company xsi:type="xsd:string">

UlUCWAd4ASJcEgVhBW1ZNFxwUzcDYFpvU2leNg==</company><address xsi:type="xsd:string">

BhsHZQd4UHMBS1c7BmgIJAsXAWlbewoDBTgAdQM8ASNWMgY8AH0AiwhYVjxQMgl8DTQHbQNiDSJSclQy

</address><phone

xsi:type="xsd:string">BGMGMFExAjIONQc6VmcBOwhiVmNVbF87</phone><email xsi:type="xsd:string">

XHIPYFJnB21eFwJgUzdZOF1kB3JRNFhmAT1ROFBvACxVYQBhBTk=</email>

</item></output>

Page 9: Pengamanan Web Service Dengan Otentikasi SOAP Web Service... · Web viewKeamanan informasi memiliki sasaran untuk memelihara kerahasiaan (confidentiality), integritas (integrity)

Gambar Paket pesan SOAP yang telah dienkripsi

Pada gambar pertama, dapat kita lihat bahwa pesan SOAP yang tidak dienkripsi

dapat dilihat data informasi yang sebenarnya yang terkandung dalam elemen body SOAP

tersebut. Informasi yang terkandung dalam pesan SOAP (baik pada elemen header atau

elemen body) seringkali merupakan data yang sensitif yang membutuhkan perlindungan

sehingga tidak dapat dibaca oleh seorang penyerang ketika menyadapnya melalui jalur

transport. Untuk mengatasi masalah ini, satu-satunya solusi adalah dengan mengenkripsi

informasi tersebut menjadi suatu bentuk data yang tidak dapat dikenali. Enkripsi

dilakukan sebelum paket pesan SOAP tersebut dikirim. Kemudian penerima yang

menerima pesan SOAP tersebut melakukan dekripsi terhadap pesan SOAP tersebut

sehingga dapat membacanya.

Berikut ini adalah langkah-langkah proses enkripsi pesan SOAP:

1. Tentukan algoritma enkripsi/dekripsi yang akan digunakan.

Page 10: Pengamanan Web Service Dengan Otentikasi SOAP Web Service... · Web viewKeamanan informasi memiliki sasaran untuk memelihara kerahasiaan (confidentiality), integritas (integrity)

2. Tentukan kunci enkripsi (ekivalen pada server dan client)

3. Lakukan enkripsi terhadap semua data informasi yang akan dikirim dengan

menggunakan kunci enkripsi.

4. Lakukan penyusunan (serialisasi) paket pesan SOAP.

5. Kirimkan paket pesan SOAP yang telah dienkripsi

6. Penerima melakukan dekripsi pesan SOAP yang diterima dengan menggunakan kunci

enkripsi yang sama.

Implementasi Keamanan Web ServiceSetelah memahami konsep rancangan mekanisme pengamanan web service yang

akan kita bangun, langkah terakhir adalah mengimplementasikan hasil rancangan tersebut

ke dalam tahap pemrograman. Dalam mengimplementasiakan konsep rancangan ini, kita

akan akan menambahkan beberapa class security pada class NuSOAP. Class-class

security tersebut adalah:

1. Class SOAPSecurity ([soap_header])

Class SOAPSecurity berfungsi untuk mengolah dan melakukan parsing header

pesan SOAP ([soap_header]) yang berisi data informasi otentikasi yang dikirim oleh

aplikasi client. Fungsi-fungsi yang terdapat dalam class SOAPSecurity adalah:

readSecurityHeader

ParseAuthenticationParams

CheckSOAPAuthentication

2. Class GetAuthenticationParams

Class GetAuthenticationParams berfungsi untuk mengambil parameter

otentikasi yang telah diparsing.

3. Class Authentication

Clas Authentication berfungsi untuk mengolah parameter otentikasi SOAP

yang didapat dan menentukan status otentikasi tersebut. Fungsi-fungsi yang terdapat

dalam class SOAPSecurity adalah:

Authentication

ExecuteAuthentication

Page 11: Pengamanan Web Service Dengan Otentikasi SOAP Web Service... · Web viewKeamanan informasi memiliki sasaran untuk memelihara kerahasiaan (confidentiality), integritas (integrity)

4. Class soapMD5Crypt

Class soapMD5Crypt berfungsi untuk melakukan proses enkripsi/dekripsi

pesan SOAP. Algoritma enkripsi yang digunakan adalah algoritma enkripsi MD5.

Fungsi-fungsi yang terdapat dalam class soapMD5Crypt adalah:

keyED

Encrypt

Decrypt

Berikut ini adalah kode skrip PHP class-class security di atas:

File: soap_security.php<?php

require_once('soap_encrypt.class.php');

class SOAPSecurity {

function SOAPSecurity($soap_header) {$this->soap_header = $soap_header;

}

function readSecurityHeader() {$data=$this->soap_header;$parser = xml_parser_create();

xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);

xml_parse_into_struct($parser, $data, $values, $tags); xml_parser_free($parser);

foreach ($tags as $key=>$val) { if ($key == "wsse:UsernameToken") { $HeaderRanges = $val; for ($i=0; $i < count($HeaderRanges); $i+=2) { $offset = $HeaderRanges[$i] + 1; $len = $HeaderRanges[$i + 1] - $offset; $auth_param[] = $this->ParseAuthenticationParams(array_slice($values, $offset, $len)); } }

else continue; }

return $auth_param;}

function ParseAuthenticationParams($Avalues) { for ($i=0; $i < count($mvalues); $i++) $auth[$mvalues[$i]["tag"]] = $mvalues[$i]["value"]; return new GetAuthenticationParams($auth);

}

function CheckSOAPAuthentication($CryptKey) {$authParam = $this->readSecurityHeader();$objAuth = new Authentication(

$authParam[0]->Username,$authParam[0]->Password,$CryptKey);if (empty($authParam[0]->Username) | empty($authParam[0]->Password) )

return false;else

return $objAuth->ExecuteAuthentication();}

}

class GetAuthenticationParams { function GetAuthenticationParams ($aa) { foreach ($aa as $k=>$v) {

$exp=explode(":",$k);$k=$exp[1];

$this->$k = $v;}

}}

class Authentication {

function Authentication($username,$password, $CryptKey) {

$soapMD5Crypt = new soapMD5Crypt;$this->username = $soapMD5Crypt->Decrypt($username,$CryptKey);$this->password = $soapMD5Crypt->Decrypt($password,$CryptKey);

}

function ExecuteAuthentication() {$x_user = "123";$x_pass = "456";if ($this->username == $x_user & $this->password == $x_pass)

return true;else

return false;}

}

?>

Page 12: Pengamanan Web Service Dengan Otentikasi SOAP Web Service... · Web viewKeamanan informasi memiliki sasaran untuk memelihara kerahasiaan (confidentiality), integritas (integrity)

File: soap_encrypt.php<?php

class soapMD5Crypt{

function keyED($txt,$encrypt_key) {$encrypt_key = md5($encrypt_key);$ctr=0;$tmp = "";for ($i=0;$i<strlen($txt);$i++){

if ($ctr==strlen($encrypt_key)) $ctr=0;$tmp.= substr($txt,$i,1)^substr($encrypt_key,$ctr,1);$ctr++;

}return $tmp;

}

function Encrypt($txt,$key) {srand((double)microtime()*1000000);$encrypt_key = md5(rand(0,32000));$ctr=0;$tmp = "";for ($i=0;$i<strlen($txt);$i++) {

if ($ctr==strlen($encrypt_key)) $ctr=0;$tmp.= substr($encrypt_key,$ctr,1) .(substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1));$ctr++;

}return base64_encode($this->keyED($tmp,$key));

}

function Decrypt($txt,$key) {$txt = $this->keyED(base64_decode($txt),$key);$tmp = "";for ($i=0;$i<strlen($txt);$i++){

$md5 = substr($txt,$i,1);$i++;$tmp.= (substr($txt,$i,1) ^ $md5);

}return $tmp;

}

function RandKey() {$randomPassword = "";srand((double)microtime()*1000000);for($i=0;$i<8;$i++) {

$randnumber = rand(48,120);while (($randnumber >= 58 && $randnumber <= 64) || ($randnumber >= 91

&& $randnumber <= 96)) {

$randnumber = rand(48,120);}$randomPassword .= chr($randnumber);

}return $randomPassword;

}

}?>

Page 13: Pengamanan Web Service Dengan Otentikasi SOAP Web Service... · Web viewKeamanan informasi memiliki sasaran untuk memelihara kerahasiaan (confidentiality), integritas (integrity)

Setelah membuat file-file class security web service di atas, langkah selanjutnya

adalah melakukan modifikasi pada class library NuSOAP. File-file class security yang

telah dibuat disisipkan ke dalam class NuSOAP dengan menambahkan kode berikut:

Page 14: Pengamanan Web Service Dengan Otentikasi SOAP Web Service... · Web viewKeamanan informasi memiliki sasaran untuk memelihara kerahasiaan (confidentiality), integritas (integrity)

Selanjutnya, tambahkan fungsi untuk memanggil class enkripsi SOAP

“soap_encrypt” ke dalam class “nusoap_base”:

Setelah menambahkan fungsi enkripsi, langkah selanjutnya adalah menambahkan

sebuah fungsi untuk menyusun header security ke dalam paket SOAP request yang akan

dikirimkan oleh aplikasi client, Fungsi ini diletakkan dalam class “soapclient”:

Seperti pada kode di atas, header SOAP menyisipkan data informasi otentikasi

SOAP yang telah dienkripsi sebelum dikirimkan ke aplikasi server.

function encrypt($val) {if (class_exists('soapMD5Crypt')) {

$soapEnc = new soapMD5Crypt;$outValue=$soapEnc->Encrypt($val,$this->CryptKey);return $outValue;

}else

return $val;}

function decrypt($val) {if (class_exists('soapMD5Crypt')) {

$soapDec = new soapMD5Crypt;$outValue=$soapDec->Decrypt($val,$this->CryptKey);return $outValue;

}else

return $val;}

/** include this if you want to use SOAP security **/require_once('soap_security.php');

function SetSOAPSecurityHeader($username=false,$password=false){if (class_exists('SOAPSecurity')) {

$username=$this->encrypt($username);$password=$this->encrypt($password);$auth = (

"<wsse:Security>"."<wsse:UsernameToken>"."<wsse:Username>$username</wsse:Username>"."<wsse:Password>$password</wsse:Password>"."</wsse:UsernameToken>"."</wsse:Security>"

);return $auth;

}}

Page 15: Pengamanan Web Service Dengan Otentikasi SOAP Web Service... · Web viewKeamanan informasi memiliki sasaran untuk memelihara kerahasiaan (confidentiality), integritas (integrity)

Langkah selanjutnya adalah melakukan pembacaan data otentikasi SOAP yang

diterima dari aplikasi client sekaligus menentukan status otentikasi SOAP tersebut.

Modifikasi dilakukan pada fungsi “service” dalam class “soap_server”:

Setelah melakukan proses otentikasi SOAP, langkah selanjutnya adalah

melakukan enkripsi pada seluruh elemen body SOAP sebelum dikirimkan baik oleh

aplikasi server maupun client. Proses enkripsi ini dilakukan pada fungsi “serialize_val”

dalam class “nusoap_base”:

Setelah melakukan peoses enkripsi pada elemen body SOAP yang akan

dikirimkan, maka selanjutnya adalah melakukan dekripsi pada seluruh elemen header dan

body pada setiap pesan SOAP yang diterima. Proses dekripsi ini dilakukan pada fungsi

“character_data” dalam class “soap_parser”:

function serialize_val($val,$name=false,$type=false,$name_ns=false,$type_ns=false,$attributes=false,$use='encoded'){

if (!is_array($val)) $val = $this->encrypt($val);………………

}

function character_data($parser, $data){$pos = $this->depth_array[$this->depth];if ($this->xml_encoding=='UTF-8'){

if($this->decode_utf8){$data = utf8_decode($data);

}}

if (class_exists('SOAPSecurity')) $this->message[$pos]['cdata'] .= $this->decrypt($data);

else$this->message[$pos]['cdata'] .= $data;

if($this->status == 'header'){$this->responseHeaders .= $data;

} else {$this->document .= $data;

}}

$isAuthenticated = new SOAPSecurity($this->requestHeaders);If ($isAuthenticated->CheckSOAPAuthentication($this->CryptKey)) {

// teruskan layanan………………

}else{

// hentikan layanan………………

}

Page 16: Pengamanan Web Service Dengan Otentikasi SOAP Web Service... · Web viewKeamanan informasi memiliki sasaran untuk memelihara kerahasiaan (confidentiality), integritas (integrity)