Web Services Security - Tobuku.com Services Security.pdf · tantangannya adalah membuat...

26
www.tobuku.com - 1 - WEB SERVICE SECURITY April 2010 Tingkat: Oleh : Feri Djuandi Pemula Menengah Mahir Platform : .NET 2.0, Ms IIS PENDAHULUAN Web Service (WS) adalah salah satu bentuk dari model pemrograman terdistribusi (distributed computing) yang pada masa ini sudah diimplementasikan secara luas. Perkembangannya sudah cukup mapan, memiliki komunitas yang luas, didukung oleh vendor-vendor besar dan diadopsi untuk berbagai variasi aplikasi bisnis. WS bukanlah sesuatu yang baru. Sama seperti produk- produk teknologi lainnya yang dikenal saat ini, WS adalah hasil sebuah evolusi - bahkan idenya telah lahir jauh sebelum Internet dikenal seperti saat ini. Pada tahun 1996 Marc Andreessen salah seorang pendiri Netscape menulis di dalam sebuah publikasi bahwa bisnis di masa depan akan menggunakan Internet Inter-ORB Protocol (IIOP) untuk ”meminta layanan dari satu platform ke platform lain yang berbeda”. Kedengaran cukup akrab di telinga? Tentu saja istilah IIOP tidak pernah dikenal luas saat ini, namun mungkin Anda akrab dengan istilah Simple Object Access Protocol (SOAP). Konsep WS mulai berkembang saat itu karena para visioner teknologi melihat bahwa Internet akan mengalami perkembangan yang sangat pesat dan salah satu tantangannya adalah membuat sistem-sistem yang terhubung di dalam jaringan itu untuk bisa berkomunikasi satu sama lain. Model pemrograman terdistribusi yang di dalammnya dilandasi oleh Remote Procedure Call (RPC) yaitu berupa pemanggilan layanan-layanan oleh sebuah sistem terhadap sistem-sistem lain adalah cikal bakal dari WS. Pada masa itu protokol pemrograman terdistribusi yang sangat populer adalah Common Object Request Broker Architecture (CORBA) yang dikenal pada UNIX, dan Component Object Model (COM) yang dikenal pada Windows. Dua model pemrograman inilah yang banyak digunakan oleh para programmer untuk mengintegrasikan sistem-sistem yang bekerja di dalam sebuah jaringan lokal. Seiring berjalannya waktu maka definisi ”jaringan” telah bergeser dari sekedar Local Area Network (LAN) yang sempit menjadi sesuatu yang jauh lebih luas, yaitu Internet yang global. Dampak dari perkembangan ini adalah sistem-sistem menjadi lebih transparan dan terbuka untuk diakses melalui banyak kanal. Hal ini agak berbeda dibandingkan masa lalu dimana sistem-sistem relatif terisolasi dan sulit untuk berkomunikasi antar jaringan. Protokol CORBA dan COM didesain untuk bekerja pada lingkungan LAN. Walaupun protokol CORBA dan COM tetap mendapatkan tempat di hati para programmer, namun sepertinya saat ini adalah waktunya bagi Web Service. Dewasa ini banyak praktisi teknologi yang beralih pada WS untuk alasan fleksibilitas dan skalabilitas yang lebih tinggi Ada satu hal yang menjadi konsekuensi dari sebuah sistem yang terbuka, yaitu masalah keamanan (security). Hal keamanan ini pula yang menjadi isu penting di dalam WS. Serupa dengan RPC pada protokol yang lain, pemanggilan layanan WS oleh sebuah sistem harus melalui tahapan-tahapan keamanan untuk memastikan pemanggil dan fungsi yang dipanggilnya adalah valid. Sehubungan dengan ini, ada proses otentikasi dan otorisasi yang dilakukan oleh system penyedia layanan WS terhadap pemanggilnya untuk memastikan bahwa ia boleh dilayani. Tanpa mekanisme ini maka WS menjadi sistem yang terbuka lebar bagi siapapun untuk mengaksesnya

Transcript of Web Services Security - Tobuku.com Services Security.pdf · tantangannya adalah membuat...

Page 1: Web Services Security - Tobuku.com Services Security.pdf · tantangannya adalah membuat sistem-sistem ... dalam dokumen ini menggunakan bahasa pemrograman C#, ... Program WS yang

www.tobuku.com

- 1 -

WEB SERVICE SECURITY April 2010 Tingkat: √

Oleh : Feri Djuandi Pemula Menengah Mahir

Platform : .NET 2.0, Ms IIS

PENDAHULUAN Web Service (WS) adalah salah satu bentuk dari model pemrograman terdistribusi (distributed

computing) yang pada masa ini sudah diimplementasikan secara luas. Perkembangannya sudah

cukup mapan, memiliki komunitas yang luas, didukung oleh vendor-vendor besar dan diadopsi

untuk berbagai variasi aplikasi bisnis. WS bukanlah sesuatu yang baru. Sama seperti produk-

produk teknologi lainnya yang dikenal saat ini, WS adalah hasil sebuah evolusi - bahkan idenya

telah lahir jauh sebelum Internet dikenal seperti saat ini. Pada tahun 1996 Marc Andreessen

salah seorang pendiri Netscape menulis di dalam sebuah publikasi bahwa bisnis di masa depan

akan menggunakan Internet Inter-ORB Protocol (IIOP) untuk ”meminta layanan dari satu

platform ke platform lain yang berbeda”. Kedengaran cukup akrab di telinga? Tentu saja istilah

IIOP tidak pernah dikenal luas saat ini, namun mungkin Anda akrab dengan istilah Simple Object

Access Protocol (SOAP). Konsep WS mulai berkembang saat itu karena para visioner teknologi

melihat bahwa Internet akan mengalami perkembangan yang sangat pesat dan salah satu

tantangannya adalah membuat sistem-sistem yang terhubung di dalam jaringan itu untuk bisa

berkomunikasi satu sama lain.

Model pemrograman terdistribusi yang di dalammnya dilandasi oleh Remote Procedure Call

(RPC) yaitu berupa pemanggilan layanan-layanan oleh sebuah sistem terhadap sistem-sistem

lain adalah cikal bakal dari WS. Pada masa itu protokol pemrograman terdistribusi yang sangat

populer adalah Common Object Request Broker Architecture (CORBA) yang dikenal pada UNIX,

dan Component Object Model (COM) yang dikenal pada Windows. Dua model pemrograman

inilah yang banyak digunakan oleh para programmer untuk mengintegrasikan sistem-sistem

yang bekerja di dalam sebuah jaringan lokal. Seiring berjalannya waktu maka definisi ”jaringan”

telah bergeser dari sekedar Local Area Network (LAN) yang sempit menjadi sesuatu yang jauh

lebih luas, yaitu Internet yang global. Dampak dari perkembangan ini adalah sistem-sistem

menjadi lebih transparan dan terbuka untuk diakses melalui banyak kanal. Hal ini agak berbeda

dibandingkan masa lalu dimana sistem-sistem relatif terisolasi dan sulit untuk berkomunikasi

antar jaringan. Protokol CORBA dan COM didesain untuk bekerja pada lingkungan LAN.

Walaupun protokol CORBA dan COM tetap mendapatkan tempat di hati para programmer,

namun sepertinya saat ini adalah waktunya bagi Web Service. Dewasa ini banyak praktisi

teknologi yang beralih pada WS untuk alasan fleksibilitas dan skalabilitas yang lebih tinggi

Ada satu hal yang menjadi konsekuensi dari sebuah sistem yang terbuka, yaitu masalah

keamanan (security). Hal keamanan ini pula yang menjadi isu penting di dalam WS. Serupa

dengan RPC pada protokol yang lain, pemanggilan layanan WS oleh sebuah sistem harus melalui

tahapan-tahapan keamanan untuk memastikan pemanggil dan fungsi yang dipanggilnya adalah

valid. Sehubungan dengan ini, ada proses otentikasi dan otorisasi yang dilakukan oleh system

penyedia layanan WS terhadap pemanggilnya untuk memastikan bahwa ia boleh dilayani. Tanpa

mekanisme ini maka WS menjadi sistem yang terbuka lebar bagi siapapun untuk mengaksesnya

Page 2: Web Services Security - Tobuku.com Services Security.pdf · tantangannya adalah membuat sistem-sistem ... dalam dokumen ini menggunakan bahasa pemrograman C#, ... Program WS yang

www.tobuku.com

- 2 -

termasuk pihak-pihak yang tidak berkepentingan. Tentunya ini adalah sesuatu yang tidak

diinginkan.

Di dalam dokumen ini istilah pemanggil layanan WS secara bergantian juga disebut WS client.

INFORMASI:

Otentikasi dan otorisasi adalah dua hal yang berbeda.

Otentikasi (authentication) adalah proses yang dilakukan infrastuktur

keamanan untuk memastikan keaslian pengakses (manusia atau sistem),

artinya dia memang sungguh-sungguh entiti tersebut, bukan entiti lain yang

mengaku menjadi pengakses tersebut. Proses otentikasi umumnya diawali

dengan membaca credential pengakses tersebut yaitu user ID dan password.

Otorisasi (authorization) adalah proses yang dilakukan infrastuktur keamanan

untuk memberikan hak-hak akses yang sesuai dengan tingkat akses yang

dimiliki pengakses. Otorisasi dilakukan setelah pengakses berhasil melalui

otentikasi.

Page 3: Web Services Security - Tobuku.com Services Security.pdf · tantangannya adalah membuat sistem-sistem ... dalam dokumen ini menggunakan bahasa pemrograman C#, ... Program WS yang

www.tobuku.com

- 3 -

JENIS-JENIS KEAMANAN WEB SERVICE Di dalam platform Windows, Web Service diaplikasikan melalui .NET Framework, Internet

Information Services (IIS) dan tentunya sistem operasi Windows itu sendiri.

Jenis-jenis keamanan yang dapat diterapkan pada platform ini adalah:

1. Windows authentication

2. Forms authentication

3. Passport authentication

4. None

Pilihan jenis keamanan tersebut dapat dikonfigur melalui tag <authentication> di dalam file

Web.config dari aplikasi Web Service yang bersangkutan. Berikut ini diperlihatkan potongan isi

file tersebut:

... <authentication mode="Windows | Forms | Passport | None"> ... </authentication> ...

Sesuai dengan namanya, Windows authentication adalah metoda otentikasi menggunakan

akun Windows untuk memvalidasi credential pemanggil. Tipe ini sangat baik diterapkan pada

lingkungan intranet dimana pemanggil Web Service berasal dari dalam jaringan lokal dan telah

dikenal secara baik. Lebih lanjut, Windows authentication dibedakan menjadi:

� Integrated Windows authentication

� Basic authentication

� Digest authentication

� Client Certificate authentication

Tipe-tipe otentikasi di atas sesuai dengan cara penanganan yang dilakukan oleh IIS. Pada

dokumen ini tipe yang akan dibahas adalah Integrated Windows dan Basic authentication.

Pada Forms authentication, pemanggil yang tidak terotentikasi akan dialihkan pada sebuah

halaman web yang dikonfigur pada file Web.config. Halaman web tersebut umumnya berisi

kolom User ID dan password yang harus dibuat oleh programmer. Pada otentikasi jenis ini,

daftar User ID dan password-nya dapat disimpan di dalam file Web.config, file XML terpisah atau

di dalam database.

Forms authentication dapat diaktifkan dengan:

1. Mengkonfigur atribut dari tag <authentication> tag di dalam file Web.config menjadi

“Forms”. Contoh:

... <system.web>

<authentication mode="Forms"/> </system.web> ...

Page 4: Web Services Security - Tobuku.com Services Security.pdf · tantangannya adalah membuat sistem-sistem ... dalam dokumen ini menggunakan bahasa pemrograman C#, ... Program WS yang

www.tobuku.com

- 4 -

2. Tidak memperbolehkan anonymous users pada IIS.

Jenis otentikasi ini kurang cocok jika diterapkan pada Web Service karena ia akan mengalihkan

pemanggil pada sebuah user interface sebelum layanan WS dapat dijalankan. Pemanggil

sebetulnya mengharapkan sebuah pesan SOAP yang dikembalikan oleh WS bukan halaman

HTML. Jika ini yang terjadi, maka masalah akan timbul.

Salah satu artikel yang cukup bagus mengenai Forms authentication dapat dibaca pada:

http://www.15seconds.com/issue/020220.htm

Pada Passport authentication, sebuah layanan terpusat dikelola oleh Microsoft menyediakan

sebuah pusat login untuk WS client. Pemanggil yang tidak terotentikasi dialihkan ke situs

Passport site. Serupa dengan Forms authentication, pengalihan ini akan menyebabkan masalah

bagi pemanggilnya kecuali hal ini ditangani secara baik pada program pemanggilnya.

Passport authentication dapat diaktifkan dengan:

1. Mengkonfigur atribut dari tag <authentication> tag di dalam file Web.config menjadi

“Passport”. Contoh:

... <system.web>

<authentication mode="Passport"/> </system.web> ...

2. Tidak memperbolehkan anonymous users pada IIS.

Salah satu artikel yang cukup bagus mengenai Passport authentication dapat dibaca pada:

http://www.devx.com/security/Article/17483

Jika pilihan otentikasi adalah None, maka itu adalah kesempatan bagi programmer untuk

melakukan otentikasi buatan sendiri (custom authentication).

Custom authentication dapat diaktifkan dengan:

1. Mengkonfigur atribut dari tag <authentication> tag di dalam file Web.config menjadi

“None”. Contoh:

... <system.web>

<authentication mode="none"/> </system.web> ...

2. Memperbolehkan anonymous users pada IIS.

Pembahasan mengenai custom authentication akan dijelaskan lebih lanjut pada dokumen ini.

Page 5: Web Services Security - Tobuku.com Services Security.pdf · tantangannya adalah membuat sistem-sistem ... dalam dokumen ini menggunakan bahasa pemrograman C#, ... Program WS yang

www.tobuku.com

- 5 -

IMPLEMENTASI WS TANPA KEAMANAN Untuk memperjelas pemahaman mengenai Web Service tanpa security, akan dibuat dua buah

program sederhana yaitu sebuah Web Service dan sebuah WS client. Semua contoh program di

dalam dokumen ini menggunakan bahasa pemrograman C#, namun penjelasannya akan sangat

mudah dipahami bagi programmer VB juga.

Program WS yang akan dibuat ini adalah sebuah kalkulator penjumlahan. Pemanggilan WS akan

disimulasikan melalui program WS client yang akan memanggil fungsi penjumlahan tersebut.

Membuat Web Service

1. Pada Visual Studio, buat sebuah Web Site baru dan pilih tipenya sebagai ASP.NET Web

Service.

Namakan web site ini sebagai WSCalc.

2. Buat sebuah class baru dengan tipe Web Service atau dapat juga mengedit dari class

yang sudah ada (saat membuat sebuah projek Web Service yang baru, secara default

Visual Studio membuat sebuah class bernama Service). Namakan class tersebut sebagai

SecureCalculator.

3. Buka SecureCalculator.cs dan ketik kode program berikut ini.

using System;

using System.Web;

using System.Web.Services;

using System.Web.Services.Protocols;

namespace WSCalc

{

[WebService(Namespace = "http://localhost/WSCalc/")]

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

public class SecureCalculator : System.Web.Services.WebService

{

public SecureCalculator()

{

//Uncomment the following line if using designed components

//InitializeComponent();

}

[WebMethod]

public int calculateInt(int num1, int num2)

{

return num1 + num2;

}

}

}

Page 6: Web Services Security - Tobuku.com Services Security.pdf · tantangannya adalah membuat sistem-sistem ... dalam dokumen ini menggunakan bahasa pemrograman C#, ... Program WS yang

www.tobuku.com

- 6 -

4. Buka SecureCalculator.asmx dan ketik kode program berikut ini.

<%@ WebService Language="C#" CodeBehind= "~/App_Code/SecureCalculator.cs" Class=

"WSCalc.SecureCalculator" %>

5. Tambahkan file Web.Config jika belum ada di dalam projek tersebut melalui menu

Website ���� Add New Item kemudian pilih Web Configuration File.

6. Compile projek tersebut dengan menu Build ���� Publish Web Site.

Sebagai hasil compile, akan diperoleh sebuah folder ..\PrecompiledWeb\WSCalc yang di

dalamnya terdapat file SecureCalculator.asmx dan sub-folder bin. Saat ini Web Service tersebut

belum dipublikasikan sehingga belum dapat diakses oleh WS client. Untuk melakukan hal

tersebut, ikuti langkah-langkah di bawah ini.

1. Copy folder WSCalc hasil kompilasi ke ..\Inetpub\wwwroot.

2. Buka aplikasi Internet Services Manager, dan buat sebuah virtual directory di bawah

Default Web Site yang sudah ada. Namakan virtual directory itu sebagai WSCalc dan

pilih folder yang dibuat pada langkah sebelumnya.

3. Isi dari virtual directory tersebut tampak seperti gambar di bawah ini.

Klik-kanan pada file SecureCalculator.asmx dan pilih menu Browse untuk melakukan uji

coba Web Service tersebut.

4. Silakan melakukan uji coba pada Web Service tersebut dengan memasukkan angka-

angka yang akan dijumlahkan.

Page 7: Web Services Security - Tobuku.com Services Security.pdf · tantangannya adalah membuat sistem-sistem ... dalam dokumen ini menggunakan bahasa pemrograman C#, ... Program WS yang

www.tobuku.com

- 7 -

Kembali kepada IIS, jika property dari file SecureCalculator.asmx ditampilkan maka tampak

bahwa file ini memperbolehkan Anonymous access yang artinya sebuah WS client tidak perlu

diotentikasi untuk bisa memanggil WS tersebut. Itulah sebabnya dikatakan WS ini tidak

diproteksi dengan mekanisme keamanan. Ia bebas dipanggil oleh siapa saja.

Page 8: Web Services Security - Tobuku.com Services Security.pdf · tantangannya adalah membuat sistem-sistem ... dalam dokumen ini menggunakan bahasa pemrograman C#, ... Program WS yang

www.tobuku.com

- 8 -

Page 9: Web Services Security - Tobuku.com Services Security.pdf · tantangannya adalah membuat sistem-sistem ... dalam dokumen ini menggunakan bahasa pemrograman C#, ... Program WS yang

www.tobuku.com

- 9 -

Membuat WS Client

WS client adalah sebuah system yang mengkonsumi sebuh Web Service. Bentuknya bisa

beragam, mulai dari sebuah aplikasi desktop, web site atau program service. Untuk penjelasan

kali ini akan dibuat sebuah aplikasi desktop karena lebih mudah dibuat.

1. Buat sebuah projek baru dengan tipe Windows Application dan beri nama WSClient.

2. Tambahkan referensi Web Service melalui menu Project ���� Add Web Reference.

Selanjutnya pilihlah Web services on the local machine, karena SecureCalculator yang

dibuat sebelumnya adalah WS yang dijalankan pada komputer lokal.

3. Berikutnya pilih Web Service SecureCalculator dan beri nama referensi tersebut sebagai

WSCalculator.

4. Buka class Form1 dan tambahkan beberapa label, textbox dan button sehingga tampak

seperti di bawah ini.

Page 10: Web Services Security - Tobuku.com Services Security.pdf · tantangannya adalah membuat sistem-sistem ... dalam dokumen ini menggunakan bahasa pemrograman C#, ... Program WS yang

www.tobuku.com

- 10 -

5. Kode program dari class ini diperlihatkan sebagai berikut.

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.Net;

namespace ClientCalc

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void btnCalculate_Click(object sender, EventArgs e)

{

WSClient.WSCalculator.SecureCalculator objCalc = new

WSClient.WSCalculator.SecureCalculator();

int result;

txtError.Text = "";

try {

result = objCalc.calculateInt(Convert.ToInt16(txtNum1.Text),

Convert.ToInt16(txtNum2.Text));

txtResult.Text = result.ToString();

}

catch (Exception exp) {

txtError.Text = exp.Message;

}

}

}

}

Perhatikan pada kode program di atas tidak ditemui rutin untuk proses otentikasi

karena memang tidak dibutuhkan oleh WS yang dipanggil.

6. Saat program client ini dijalankan, maka pemanggilan WS akan mengembalikan hasil

penjumlahan dari angka-angka yang dimasukkan.

Page 11: Web Services Security - Tobuku.com Services Security.pdf · tantangannya adalah membuat sistem-sistem ... dalam dokumen ini menggunakan bahasa pemrograman C#, ... Program WS yang

www.tobuku.com

- 11 -

IMPLEMENTASI INTEGRATED WINDOWS AUTHENTICATION Integrated Windows authentication adalah cara yang aman untuk mengirimkan credential WS

client di dalam jaringan Windows. Dengan metode ini, Web Service akan mempercayakan

proses otentikasi sebuah WS client kepada Windows sehingga jika WS client tersebut sudah

sukses melewati otentikasi oleh sebuah domain Windows maka ia diperbolehkan untuk

memanggil layanan Web Service. Cara ini skema terbaik untuk digunakan di dalam intranet

menggunakan Windows, namun ia tidak dapat diterapkan pada lingkungan Internet.

Untuk mengaktifkan Integrated Windows authentication, berikut adalah langkah-langkah yang

perlu dilakukan.

Menyiapkan Web Service

1. Copy folder ..\Inetpub\wwwroot\WSCalc pada folder baru dan beri nama

..\Inetpub\wwwroot\WSCalcIWA.

2. Pastikan tag <authentication mode> pada file Web.Config bernilai “Windows”.

3. Dengan menggunakan Internet Services Manager, buat sebuah virtual directory di

bawah Default Web Site yang sudah ada. Namakan virtual directory itu sebagai

WSCalcIWA dan pilih folder yang dibuat pada langkah sebelumnya.

4. Atur property dari file SecureCalculator.asmx dengan menghilangkan tanda cek dari

opsi Anonymous access dan menandai opsi Interated Windows authentication.

Page 12: Web Services Security - Tobuku.com Services Security.pdf · tantangannya adalah membuat sistem-sistem ... dalam dokumen ini menggunakan bahasa pemrograman C#, ... Program WS yang

www.tobuku.com

- 12 -

5. Hal penting lainnya yang harus dilakukan adalah mengatur keamanan file

SecureCalculator.asmx pada level sistem operasi Windows. Dengan menggunakan

Windows Explorer, buka file itu dan pastikan hanya grup dan akun tertentu yang dapat

membuka file tersebut (misalnya dengan menghapus akses untuk akun guest).

6. Lakukan uji coba terhadap Web Services ini dengan menggunakan Internet browser

seperti di bawah ini. Silakan lakukan uji coba untuk menghapus atau menambah akun

atau grup akun Windows lainnya pada langkah sebelumnya dan bandingkan efek-

efeknya.

Page 13: Web Services Security - Tobuku.com Services Security.pdf · tantangannya adalah membuat sistem-sistem ... dalam dokumen ini menggunakan bahasa pemrograman C#, ... Program WS yang

www.tobuku.com

- 13 -

Memodifikasi WS Client

1. Dari program desktop yang dibuat sebelumnya, WSClient – salin folder projek tersebut

menjadi folder lain dan beri nama WSClientIWA. Buka projek yang baru ini.

2. Ubah Web Reference WSCalculator menjadi

http://localhost/WSCalcIWA/SecureCalculator.asmx.

3. Buka class Form1.cs dan ubah kode programnya dengan menambahkan baris-baris

program yang ditandai berikut ini.

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.Net;

namespace ClientCalc

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void btnCalculate_Click(object sender, EventArgs e)

{

WSClient.WSCalculator.SecureCalculator objCalc = new

WSClient.WSCalculator.SecureCalculator();

int result;

NetworkCredential objCredential = CredentialCache.DefaultNetworkCredentials;

objCalc.Credentials = objCredential;

txtError.Text = "";

try {

result = objCalc.calculateInt(Convert.ToInt16(txtNum1.Text),

Convert.ToInt16(txtNum2.Text));

Page 14: Web Services Security - Tobuku.com Services Security.pdf · tantangannya adalah membuat sistem-sistem ... dalam dokumen ini menggunakan bahasa pemrograman C#, ... Program WS yang

www.tobuku.com

- 14 -

txtResult.Text = result.ToString();

}

catch (Exception exp) {

txtError.Text = exp.Message;

}

}

}

}

Modifikasi program di atas bisa dijelaskan sebagai berikut.

... NetworkCredential objCredential = CredentialCache.DefaultNetworkCredentials;

Baris ini berusaha untuk mendapatkan credential dari akun Windows yang sedang login,

dala hal ini adalah akun Anda yang sedang login di dalam jaringan Windows.

... objCalc.Credentials = objCredential;

Baris ini mengirimkan credential dari akun Windows tersebut kepada Web Service,

dengan demikan Web Service akan mengetahui credential dari WS client yang

memanggilnya. Perhatikan bahwa dalam proses ini tidak ada mekanisme otentikasi

karena Web Service sudah mempercayakan hal itu kepada sistem operasi Windows.

4. Silakan menjalankan program WS client ini dan lakukan beberapa uji coba.

5. Cobalah menghilangkan akses dari beberapa akun atau grup Windows terhadap file

SecureCalculator.asmx (misalnya grup ”Domain users”) dan perhatikan efeknya seperti

contoh di bawah ini.

TIPS:

Saat mengatur akses keamanan untuk Web Service (file asmx), upayakan tetap

memberikan hak akses untuk akun ASPNET dan SYSTEM minimal read dan “read &

execute”.

Page 15: Web Services Security - Tobuku.com Services Security.pdf · tantangannya adalah membuat sistem-sistem ... dalam dokumen ini menggunakan bahasa pemrograman C#, ... Program WS yang

www.tobuku.com

- 15 -

BASIC AUTHENTICATION Basic authentication berbeda dengan Integrated Windows authentication karena ia tidak

memerlukan WS client untuk login terlebih dahulu ke dalam jaringan Windows namun otentikasi

akan dilakukan pada saat pemanggilan Web Services itu sendiri. Pada Basic authentication WS

client diminta untuk menyebutkan credential-nya, selanjutnya informasi ini akan dikirim kepada

server Web Service. Basic authentication relative kurang aman karena credential yang dikirim

oleh WS client dapat dicuri di tengah jalan. Solusi yang umum untuk mengamankan jalur

komunikasi adalah dengan menggunakan secure hypertext transfer protocol (HTTPS) sehingga

Basic authentication cukup aman digunakan.

Contoh implementasi Basic authentication diperlihatkan sebagai berikut.

Membuat Akun Lokal

Sebuah akun local akan dibuat pada server Web Service karena dalam penjelasan ini tidak akan

digunakan akun domain Windows walaupun secara umum akun domain juga dapat digunakan

dalam metoda ini. Berikut ini adalah akun lokal yang akan dibuat:

Nama User : DEMO_USER

Password : p@ssw0rd

Page 16: Web Services Security - Tobuku.com Services Security.pdf · tantangannya adalah membuat sistem-sistem ... dalam dokumen ini menggunakan bahasa pemrograman C#, ... Program WS yang

www.tobuku.com

- 16 -

Menyiapkan Web Service

1. Copy folder ..\Inetpub\wwwroot\WSCalc pada folder baru dan beri nama

..\Inetpub\wwwroot\WSCalcBA.

2. Pastikan tag <authentication mode> pada file Web.Config bernilai “Windows”.

3. Dengan menggunakan Internet Services Manager, buat sebuah virtual directory di

bawah Default Web Site yang sudah ada. Namakan virtual directory itu sebagai

WSCalcBA dan pilih folder yang dibuat pada langkah sebelumnya.

4. Atur property dari file SecureCalculator.asmx dengan menghilangkan tanda cek dari

opsi Anonymous access dan menandai opsi Basic authentication.

Page 17: Web Services Security - Tobuku.com Services Security.pdf · tantangannya adalah membuat sistem-sistem ... dalam dokumen ini menggunakan bahasa pemrograman C#, ... Program WS yang

www.tobuku.com

- 17 -

5. Hal penting lainnya yang harus dilakukan adalah mengatur keamanan file

SecureCalculator.asmx pada level sistem operasi Windows. Dengan menggunakan

Windows Explorer, buka file itu dan pastikan hanya akun DEMO_USER yang dapat

membuka file tersebut (hilangkan akun/grup lain kecuali ASPNET dan SYSTEM).

6. Lakukan uji coba terhadap Web Services ini dengan menggunakan Internet browser

seperti di bawah ini. Berbeda dengan sebelumnya, kali ini sebuah kotak login akan

muncul meminta untuk dimasukan user name dan password. Silakan isi dengan

informasi akun lokal yang telah dibuat sebelumnya.

Page 18: Web Services Security - Tobuku.com Services Security.pdf · tantangannya adalah membuat sistem-sistem ... dalam dokumen ini menggunakan bahasa pemrograman C#, ... Program WS yang

www.tobuku.com

- 18 -

Memodifikasi WS Client

1. Dari program desktop yang dibuat sebelumnya, WSClient – salin folder projek tersebut

menjadi folder lain dan beri nama WSClientBA. Buka projek yang baru ini.

2. Ubah Web Reference WSCalculator menjadi

http://localhost/WSCalcBA/SecureCalculator.asmx.

3. Buka class Form1.cs dan ubah kode programnya dengan menambahkan baris-baris

program yang ditandai berikut ini.

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.Net;

namespace ClientCalc

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

Page 19: Web Services Security - Tobuku.com Services Security.pdf · tantangannya adalah membuat sistem-sistem ... dalam dokumen ini menggunakan bahasa pemrograman C#, ... Program WS yang

www.tobuku.com

- 19 -

}

private void btnCalculate_Click(object sender, EventArgs e)

{

WSClient.WSCalculator.SecureCalculator objCalc = new

WSClient.WSCalculator.SecureCalculator();

int result;

NetworkCredential objCredential = new NetworkCredential("DEMO_USER",

"p@ssw0rd", "");

objCalc.Credentials = objCredential;

txtError.Text = "";

try {

result = objCalc.calculateInt(Convert.ToInt16(txtNum1.Text),

Convert.ToInt16(txtNum2.Text));

txtResult.Text = result.ToString();

}

catch (Exception exp) {

txtError.Text = exp.Message;

}

}

}

}

Modifikasi program di atas bisa dijelaskan sebagai berikut.

... NetworkCredential objCredential = new NetworkCredential("DEMO_USER", "p@ssw0rd", "");

Baris ini membuat sebuah credential dari akun lokal DEMO_USER. Pada contoh ini

informasi akun diketik langsung pada program (hard coded) dimana hal ini tidak

direkomendasikan. Pada praktek yang umum, informasi akun akan lebih baik dimasukan

melalui kotak login atau jika bentuknya permanen bisa diketikkan pada file konfigurasi.

... objCalc.Credentials = objCredential;

Baris ini mengirimkan credential dari akun tersebut kepada Web Service, dengan

demikan Web Service akan mengetahui credential dari WS client yang memanggilnya.

Perhatikan bahwa proses otentikasi akan dilakukan oleh server Web Service saat

pemanggilan diterimanya. Sekali lagi, Basic autentication mengandung kerawanan jika

credential dikirimkan tanpa pengaman enkripsi.

4. Silakan menjalankan program WS client ini dan lakukan beberapa uji coba.

Page 20: Web Services Security - Tobuku.com Services Security.pdf · tantangannya adalah membuat sistem-sistem ... dalam dokumen ini menggunakan bahasa pemrograman C#, ... Program WS yang

www.tobuku.com

- 20 -

4. IMPLEMENTASI CUSTOM AUTHENTICATION Jika diputuskan akan menggunakan Custom authentication, maka proses otentikasi tidak akan

bergantung pada IIS demikian pula credential dari WS client tidak akan dibuat di dalam Windows

namun setiap user ID dan password-nya dibuat berdasarkan aturan dan mekanisme khusus yang

didefinisikan menurut kebutuhan tersendiri. Selanjutnya proses otentikasi pun akan dilakukan

dengan cara yang serupa.

Karena kali ini otorisasi dan otentikasi akan ditangani sendiri oleh Web Service maka pada di

dalam komponen ini harus terdapat sub-sub program yang menangani proses-proses keamana

tersebut. Sebagai contoh, penanganan keamanan pada Custom authentication dapat dilakukan

melalui sebuah class berikut ini.

public class UserManager { public UserManager(); public bool Authenticate(string userName, string password); //Other members and methods }

UserManager adalah sebuah class yang didefinisikan secara public. Saat sebuah Web Service

dipanggil oleh WS client maka sebelum WS melakukan apapun ia akan memanggil UserManager

untuk melakukan otentikasi apakah WS client yang memanggilnya adalah credential yang valid.

Jika “ya”, maka method Authenticate akan mengembalikan nilai TRUE, sedangkan sebaliknya

adalah FALSE. Ini adalah sebuah teknik sederhana yang bisa menggambarkan algoritma

keamanan pada Custom authentication. Untuk memberikan gambaran yang lebih jelas, berikut

ini akan dibuat sebuah projek baru yang berkaitan dengan uraian di atas.

1. Pada Visual Studio, buat sebuah Web Site baru dan pilih tipenya sebagai ASP.NET Web

Service.

Namakan web site ini sebagai WSCalcCA.

2. Buat sebuah class baru dan namakan sebagai UserManager.

3. Buka UserManager.cs dan ketik kode program berikut ini.

namespace WSCalcCA

{

public class UserManager

{

public UserManager()

{

//

// TODO: Add constructor logic here

Page 21: Web Services Security - Tobuku.com Services Security.pdf · tantangannya adalah membuat sistem-sistem ... dalam dokumen ini menggunakan bahasa pemrograman C#, ... Program WS yang

www.tobuku.com

- 21 -

//

}

public bool Authenticate(string userName,

string password)

{

//This is an example of a very basic authentication

//Please DO NOT use this kind. It is only for demo

if (userName == "DEMO_USER" && password == "p@ssw0rd")

return true;

else

return false;

}

}

}

Mekanisme otentikasi di atas hanyalah sebuah contoh untuk keperluan demonstrasi.

Untuk penggunaan yang sesungguhnya tentu saja cara di atas bukan teknik yang baik,

mohon jangan ditiru. Pada prakteknya user ID dan password akan lebih baik jika

disimpan terpisah di dalam database yang aman dan menggunakan enkripsi.

4. Buat sebuah class baru dengan tipe Web Service atau dapat juga mengedit dari class

yang sudah ada (saat membuat sebuah projek Web Service yang baru, secara default

Visual Studio membuat sebuah class bernama Service). Namakan class tersebut sebagai

SecureCalculator.

5. Buka SecureCalculator.cs dan ketik kode program berikut ini.

using System;

using System.Web;

using System.Web.Services;

using System.Web.Services.Protocols;

namespace WSCalcCA

{

[WebService(Namespace = "http://localhost/WSCalcCA/")]

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

public class SecureCalculator : System.Web.Services.WebService

{

public SecureCalculator()

{

//Uncomment the following line if using designed components

//InitializeComponent();

}

bool IsAuthenticated

{

get

{

object state = Session["IsAuthenticated"];

if (state != null)

return (bool)state;

else

{

IsAuthenticated = false;

return false;

}

}

set

{

Session["IsAuthenticated"] = value;

}

}

[WebMethod(EnableSession = true)]

Page 22: Web Services Security - Tobuku.com Services Security.pdf · tantangannya adalah membuat sistem-sistem ... dalam dokumen ini menggunakan bahasa pemrograman C#, ... Program WS yang

www.tobuku.com

- 22 -

public bool LogIn(string userName, string password)

{

UserManager userManager = new UserManager();

bool authenticated;

authenticated = userManager.Authenticate(userName, password);

if(authenticated==false)

{

throw new UnauthorizedAccessException("Invalid user name or password

provided");

}

IsAuthenticated = authenticated;

return authenticated;

}

[WebMethod(EnableSession = true)]

public void LogOut()

{

IsAuthenticated = false;

}

[WebMethod(EnableSession = true)]

public int calculateInt(int num1, int num2)

{

if (IsAuthenticated == false)

{

throw new UnauthorizedAccessException("User not authenticated");

}

return num1 + num2;

}

}

}

Yang membedakan program ini dibandingkan yang sebelumnya adalah penambahan

opsi EnableSession = true di awal baris setiap method. Hal ini dilakukan untuk

mengaktifkan sesi pada saat login berhasil. Dalam sesi tersebut WS client yang sudah

terotentikasi dapat memanggil method-method dari WS. Di luar sebuah sesi, WS client

tidak dapat memanggil method.

6. Buka SecureCalculator.asmx dan ketik kode program berikut ini.

<%@ WebService Language="C#" CodeBehind= "~/App_Code/SecureCalculator.cs" Class=

"WSCalc.SecureCalculator" %>

7. Tambahkan file Web.Config jika belum ada di dalam projek tersebut melalui menu

Website ���� Add New Item kemudian pilih Web Configuration File.

8. Buka file Web.Config dan edit tag <authentication mode> sehingga nilainya menjadi

“None”.

... <authentication mode="None" /> ...

9. Compile projek tersebut dengan menu Build ���� Publish Web Site.

Page 23: Web Services Security - Tobuku.com Services Security.pdf · tantangannya adalah membuat sistem-sistem ... dalam dokumen ini menggunakan bahasa pemrograman C#, ... Program WS yang

www.tobuku.com

- 23 -

Sebagai hasil compile, akan diperoleh sebuah folder ..\PrecompiledWeb\WSCalcCA yang di

dalamnya terdapat file SecureCalculator.asmx dan sub-folder bin. Publikasikan Web Service

tersebut dengan langkah-langkah sebagai berikut:

1. Copy folder WSCalcCA hasil kompilasi ke ..\Inetpub\wwwroot.

2. Buka aplikasi Internet Services Manager, dan buat sebuah virtual directory di bawah

Default Web Site yang sudah ada. Namakan virtual directory itu sebagai WSCalcCA dan

pilih folder yang dibuat pada langkah sebelumnya.

3. Isi dari virtual directory tersebut tampak seperti gambar di bawah ini.

Pastikan directory security dari WSCalcCA dan file security dari SecureCalculator.asmx

mengijinkan Anonymous access.

Page 24: Web Services Security - Tobuku.com Services Security.pdf · tantangannya adalah membuat sistem-sistem ... dalam dokumen ini menggunakan bahasa pemrograman C#, ... Program WS yang

www.tobuku.com

- 24 -

Untuk uji coba, silakan memanggil Web Service itu menggunakan Internet browser. Tampilannya

diperlihatkan seperti di bawah ini dimana sekarang WS tersebut memiliki tiga buah method.

Tanpa login terlebih dahulu, silakan memanggil method calculate. Reaksi yang seharusnya

terjadi adalah munculnya pesan kesalahan pada layar browser.

Kesalahan tersebut bisa ditampilkan secara berbeda pada beberapa browser. Sebagai contoh

Internet Explorer di atas tidak menampilkan pesan yang spesifik. Namun jika hal yang sama

dicoba pada Mozilla Firefox maka akan muncul sebuah pesan kesalahan yang lebih jelas. Pesan

ini adalah teks yang sengaja ditampilkan oleh program jika user tersebut belum login ke dalam

WS.

Page 25: Web Services Security - Tobuku.com Services Security.pdf · tantangannya adalah membuat sistem-sistem ... dalam dokumen ini menggunakan bahasa pemrograman C#, ... Program WS yang

www.tobuku.com

- 25 -

Sekarang coba melakukan login terlebih dahulu, dan panggil kembali method yang sama.

Jika otentikasi berhasil, seharusnya kali ini Web Service mengembalikan hasil pemanggilannya

dengan benar.

Page 26: Web Services Security - Tobuku.com Services Security.pdf · tantangannya adalah membuat sistem-sistem ... dalam dokumen ini menggunakan bahasa pemrograman C#, ... Program WS yang

www.tobuku.com

- 26 -

Referensi:

� Web Services Security in The .NET Framework. Mansoor Ahmed Siddiqui.

http://www.15seconds.com/issue/020312.htm

� .NET Web Services Security. Juval Lowy.

http://www.code-magazine.com/article.aspx?quickid=0307071&page=1