Merhaba arkadaşlar bugünkü konumuz Exchange owa sayfasına yetkisiz giriş denemelerini engellemek logların arasına gereksiz deneme logları girmemesi adına OWA sayfasına Google reCaptcha eklemeyi anlatacağım.

Aslında genel itibariyle basit fakat bazı önemli noktalar olduğunu düşündüğümden dolayı yazmak istedim.

Öncelikle googel recaptcha için hemen aşağıdaki linki tıklayarak sayfaya gidiyoruz.

Link: https://www.google.com/recaptcha

Enterprise tarafına giriş yaparsak ve orada bir proje oluşturmaya kalkarsak bizi google cloud tarafına yönlendiriyor.

Aylık 1.000.000 tıklamaya kadar ücretsiz ve oradaki ayarlar daha ayrıntılı diyebilirim.

Biz burada v3 Admin Console a gider gibi yaparak ücretsiz recaptcha sayfasına gideceğiz.

Bize google hesabı soracak hemen ve biz google hesabı ile login olduğumuzda aşağıdaki sayfa açılacaktır. + tuşuna basarak kendi projemizi oluşturuyoruz.

Benim OWA sayfam mail.yunuscobas.com olarak geçiyor. LAB ortamında yapıyorsanız eğer yunus.local şeklinde de izin veriyor.

Hizmet şartlarını da kabul edip “Gönder” butonuna bastıktan sonra projemiş oluşuyor. Projemize ait site key ve gizli anahtarı saklıyoruz.

Şimdi Exchange tarafına geliyoruz. Burada ilk önce owa sayfasının .aspx ile biten logon giriş sayfasına ait dosyayı bulacağız.

C:\Program Files\Microsoft\Exchange Server\V15\FrontEnd\HttpProxy\owa\auth
Logon.aspx

Evet dosyayı bulduk ve sıra geldi düzenlemeye. Aşağıdaki kodu alın ve kendinize göre düzenleyin.

<script type="text/javascript">
function myClkLgn()
{
	var oReq = new XMLHttpRequest();
	var sResponse = document.getElementById("g-recaptcha-response").value;
	var sData = "response=" + sResponse;
	oReq.open("GET", "/owa/auth/recaptcha.aspx?" + sData, false);
	oReq.send(sData);
	if (oReq.responseText.indexOf("true") != -1)
	{
		document.forms[0].action = "/owa/auth.owa";
		clkLgn();
	}
	else
	{
		alert("reCaptcha Doğrulanamadı!");
	}
}
</script>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
<div class="g-recaptcha" data-sitekey="Burada sizin Site anahtarınız olmalı"></div>

Şimdi logon.aspx de hangi satırlar arasına ekleyeceğimizi söyleyeceğim. Aşağıdaki görsel e dikkat.

Şimdi burada biz recaptchayı ekleyeceğiz ve aslında yeni bir şart da eklemiş oluyoruz. Bunun için bizim fonksiyonumuzu aşağıdaki Click işlemine eklememiz gerekiyor.

Aşağıdaki görsele dikkat edin. Aşağıdaki gibi fonksiyon ismi ile onclick ismini aynı yapıyoruz. Bu sayede recaptcha şartı sağlanmadan giriş yapamıyoruz.

Kaydediyoruz ve bu dosyayı kapatıyoruz. Unutmayın tüm bu işlemler yapmadan önce bir kopyasını almakta fayda var.

Şimdi recaptca.aspx dosyasını oluşturmalıyız.

Yeni bir notepad açın ve aşağıdaki kodları kendinize göre düzenledikten sonra yapıştırın ve recaptcha.aspx olarak kaydedin ve Logon.aspx dosyasının bulunduğu konuma atın.

<% @ Page AspCompat=True Language = "VB" %>
<%
Dim strPrivateKey As String = "Buradaa sizin gizli anahtarınız olmalı"
Dim strResponse = Request("response")
Dim objWinHTTP As Object
objWinHTTP = Server.CreateObject("WinHTTP.WinHTTPRequest.5.1")
objWinHTTP.Open("POST", "https://www.google.com/recaptcha/api/siteverify", False)
objWinHTTP.SetRequestHeader("Content-type", "application/x-www-form-urlencoded")
Dim strData As String = "secret=" & strPrivateKey & _
"&response=" & strResponse
objWinHTTP.Send(strData)
Dim strResponseText = objWinHTTP.ResponseText
Response.Write(strResponseText)
%>

Yaptığımız değişikler genelde hemen gözüksede yinede biz CMD den aşağıdaki komut ile IIS servisini durdurup tekrar çalıştırıyoruz.

Owa sayfamızı açtığımızda artık bizi aşağıdaki ekran karşılıyor. Fakat buradaki recaptcha ilk başlarda sadece kutucuğu işaretleyince girişinize izin verecektir.

Arka tarafta google ın analiz sistemi çalışıyor. Ne kadar çok giriş olursa duruma göre kendisi bizlere görsel üzerinden sorular soruyor. Sonra neden olmadı neden çıkmadı bizde demeyin 🙂

ÖNEMLİ

Sistemi test ettiğimiz çoğu kullanıcı gibi bizde bilgilerimizi girdikten sonra “Enter” tuşuna basarak giriş yapıyoruz. İşte bu giriş esnasında recaptcha şartının çalışmadığını hiç sormadan kullanıcı adı şifreye bakarak bizi içeri aldığını gördük.

Burada küçük bir kod ile Enter tuşu fonksiyonunu bu sayfa için kapatacağız. Aşağıdaki kodu Logon.aspx </head> tag ından sonrasına <body> tag ı içerisine yapıştımanız yetelidir.

<body onkeydown="return (event.keyCode!=13)" onunload="">

Hepinize iyi çalışmalar dilerim.:)