• Tidak ada hasil yang ditemukan

WEB SERVICE SECURITY April 2010 Tingkat: Oleh : Feri Djuandi Pemula Menengah Mahir Platform :.NET 2.0, Ms IIS

N/A
N/A
Protected

Academic year: 2021

Membagikan "WEB SERVICE SECURITY April 2010 Tingkat: Oleh : Feri Djuandi Pemula Menengah Mahir Platform :.NET 2.0, Ms IIS"

Copied!
26
0
0

Teks penuh

(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

(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.

(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> ...

(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.

(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;

} } }

(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.

(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.

(8)
(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.

(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.

(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.

(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.

(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),

(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”.

(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

(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.

(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.

(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()

{

(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.

(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()

{

//

(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; }

}

(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 edittag <authentication mode> sehingga nilainya menjadi “None”.

...

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

(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.

(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.

(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.

(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.

Referensi

Dokumen terkait

Kajian Lingkungan Hidup Strategis yang selanjutnya disingkat KLHS adalah proses mengintegrasikan pembangunan berkelanjutan yang berwawasan lingkungan hidup dalam

Sebelum membentuk Tim Penyusun, kepala Desa Kemuningsari Lor dalam mengawali pelaksanaan penyusunan RPJMDesanya melibatkan BPD sebagai penyelenggara Musyawarah Desa,

‰ Jika diberi bahan dielektrik diantara kedua pelat maka untuk beda potensial yang sama, muatan kapasitor menjadi bertambah, sehingga kapasitasnya pun bertambah.. Efek

Sehingga dengan banyaknya pembiayaan yang diambil oleh nasabah maka oleh sebab itu perlunya pengantisipasian dan strategi mengatasi pembiayaan bermasalah agar terhindar dari kredit

Persamaan dalam hal materi pelajaran yang ditemukan adalah bahwa pelajaran senantiasa membahas tentang pengetahuan yang penting (fakta, ide, konsep, dan teori). Sementara

Semua asam hipohalit adalah asam lemah karena tidak mengion sempurna dalam air. Sifat ini disebabkan atom halogen pada asam hipohalit lebih

Adapun skripsi yang penulis susun ini berkaitan dengan tanggung jawab dan perlindungan hukum bagi dokter internsip dalam perjanjian terapeutik di RS. Penulis lebih menyoroti pada