Bildiğiniz üzere Coldfusion ile bir component dosyasını kolaylıkla web servisine dönüştürebilirsiniz. Fakat güvenliğini nasıl sağlayacaksınız? Eğer bir web servisini invoke ettiğiniz dosya adında username ve password parametrelerini kullanıp web servisi içinde de cflogin ile kontrol ettirerek web servisinizin güvenliğini sağlayabilirsiniz.
Örnek: webs adında bir web servisi oluşturup içinde echoString adında bir metod yazalım. Bu metodu uzaktan çağırdığımızda bize ekrana “merhaba” yazsın fakat bu işlemi kullanıcı adı ve şifre ile yapsın. Yani eğer yetkisi olmayan birisi bu web servisini çağırdığında bu metodu çağıramasın. Bunun için şöyle bir yöntem izliyoruz.
Web servisi için bir dizin açıp içinde çağıracağımız web servisini yazacağımız cfc dosyasını oluşturalım. Bu dizin içinde güvenlik kontrolünü sağlayacak bir application.cfm oluşturalım. Artık eğer web servisini çağırırken doğru kullanıcı adı ve şifreyi web servisine gönderemezsek bize yetkiniz yok mesajı verecektir.
Örnek Kod:
1) Application.cfm dosyası (/webs/Application.cfm):
<cfapplication name=”MyWebService”>
<cflogin idletimeout=”600″>
<cfif not isdefined(“cflogin”)>
<cfheader statuscode=”401″>
<cfheader name=”WWW-Authenticate” value=”Basic realm=”"MyWebService”"”>
Bu web servisi için yetkiniz yok!
<cfabort>
<cfelse>
<!—Bu alana kullanıcı adı ve şifrelerinin tutulduğu bir tablodan kontrol de yerleştirebilirsiniz —>
<cfif (#cflogin.name# eq “bora”) and (#cflogin.password# eq “mypass”)>
<cfelse>
<cfheader statuscode=”401″>
<cfheader name=”WWW-Authenticate”
value=”Basic realm=”"MyWebService”"”>
Bu web servisi için yetkiniz yok!
<cfabort>
</cfif>
</cfif>
</cflogin>
2) Web servisi dosyasında (/webs/webs.cfc):
<cfcomponent output=”false”>
<cffunction
name = “echoString”
returnType = “string”
output = “no” access = “remote”>
<cfargument name = “input” type = “string”>
<cfreturn #arguments.input#>
</cffunction>
</cfcomponent>
3) Web servisini çağırdığımız dosyada (call.cfm):
<cfinvoke webservice =”http://mycfserver/test/bora/webs/webs.cfc?wsdl”
method =”echoString”
input = “Merhaba”
returnVariable=”donen_deger”
username=”bora”
password=”mypass”>
<cfoutput> #donen_deger# </cfoutput>
Password gönderirken md5 ile şifreleyebilirsiniz veya application.cfm dosyası içinde veritabanı veya başka bir web servisinde kayıtlı bir kullanıcı adı ve şifre ile karşılaştırılmasını sağlayabilirsiniz.