Dodanie weryfikacji google reCAPTCHA przy logowaniu przez www

W pierwszej kolejności należy wygenerować klucze wykorzystywane do autoryzacji reCAPTCHA. Aby tego dokonać przechodzimy na stronę https://www.google.com/recaptcha/ i logujemy się na konto google. Po zalogowaniu przechodzimy do konfiguracji – klikamy na „v3 Admin Console”. Aby dodać nową konfigurację klikamy znak plusa po prawej stronie na górze strony

W kolejnym kroku otwiera się strona konfiguracji reCAPTCHA

W polu Etykieta podajemy nazwę pod jaką chcemy mieć zapisaną konfigurację. Możemy utworzyć wiele konfiguracji, różne dla różnych stron na których chcemy dodać funkcjonalność reCAPTCHA.
Wybieramy Typ reCAPTCHA w wersji 2 i „Pole wyboru „Nie jestem robotem””.
Następnie podajemy domeny których dotyczyć ma konfiguracja czyli strony na których będziemy wykorzystywać funkcjonalność reCAPTCHA. Oprócz nazw domenowych możemy tu także podać adresy IP. W przypadku gdy będą tylko nazwy domenowe nie będziemy mogli skorzystać z funkcjonalności reCAPTCHA jeśli połączymy się ze stroną po adresie IP. W tym miejscu można dodać kilka adresów zarówno domenowych jak i IP. Do wszystkich podanych tu stron będzie obowiązywała ta sama konfiguracja (te same klucze).
Obok znaku plusa wprowadzamy nazwę domeny i klikamy w znak plusa, następnie wprowadzamy kolejny adres itd.
W polu właściciele automatycznie mamy wprowadzony adres email naszego konta google ale możemy także dopisać inny.
Akceptujemy Warunki korzystania z usługi reCAPTCHA.
Po zaznaczeniu opcji „Wyślij alerty do właścicieli” na konta podane w sekcji „Właściciele” będą wysyłane alerty.
Akceptujemy konfigurację.
Po zaakceptowaniu wyświetlone zostaną klucze witryny oraz tajny. Kopiujemy klucze i zapisujemy gdyż będą potrzebne na kolejnym etapie konfiguracji.

Klucze te możemy także odczytać później. Wystarczy na głównej stronie wybrać profil konfiguracji i przejść do ustawień (symbol koła zębatego).

Po przejściu do ustawień rozwijamy sekcję „Klucze reCAPTCHA”.

Po wygenerowaniu kluczy przechodzimy do wprowadzenia zmian na serwerach Exchange.
W przypadku Exchange 2013 przechodzimy na serwerach CAS do lokalizacji:
C:\Program Files\Microsoft\Exchange Server\V14\ClientAccess\Owa\auth
W przypadku Exchange 2016 do lokalizacji:
C:\Program Files\Microsoft\Exchange Server\V15\FrontEnd\HttpProxy\owa\auth\
W powyższej lokalizacji tworzymy plik o nazwie np. „recaptcha.aspx
Edytujemy plik i wprowadzamy następującą zawartość:

<% @ Page AspCompat=True Language = "VB" %>
<%
' Put your own private key in the next line
Dim strPrivateKey As String = "KluczTajny"
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)
%>

W linii:

Dim strPrivateKey As String = "KluczTajny"

pomiędzy cudzysłowami wprowadzamy nasz własny tajny klucz otrzymany w konfiguracji reCAPTCHA na stronie google.

Następnym krokiem jest zmodyfikowanie pliku logon.aspx znajdującego się w tej samej lokalizacji. Przed zmodyfikowaniem pliku zalecane jest wykonanie kopii bezpieczeństwa pliku.
Wyszukujemy ciąg znaków:

form action="/owa/auth.owa" method="POST" name="logonForm"

Modyfikujemy treść akcji tak, aby była pusta. Ma to na celu uniemożliwienie użytkownikom lub robotom bezpośredniego wywołania Enter/Return w celu przesłania formularza.

form action="" method="POST" name="logonForm"

W kolejnym kroku wyszukujemy ciąg znaków
<div><input id="passwordText"

i po nim wklejamy następującą zawartość

<tr>
<td>
<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("Niepoprawny kod reCaptcha" + "\n" +"Wprowadź poprawną wartość reCAPTCHA");
}
}
</script>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
<div class="g-recaptcha" data-sitekey="KluczWitryny"></div>
</td>
</tr>

W linii:

<div class="g-recaptcha" data-sitekey="KluczWitryny"></div>

pomiędzy cudzysłowami, zamiast wartości KluczWitryny wprowadzamy nasz własny klucz z konfiguracji reCAPTCHA.
W przypadku gdy wcześniej utworzyliśmy plik o nazwie „recaptcha.aspx” nie musimy nie zmieniać. W przypadku gdy plik nazwaliśmy inaczej należy odpowiednio zmodyfikować linię:

oReq.open("GET", "/owa/auth/recaptcha.aspx?" + sData, false);

podając właściwą nazwę pliku.
W przypadku gdy chcemy zmodyfikować komunikat wyświetlający się w przypadku błędnej weryfikacji reCAPTCHA odpowiednią zmianę wprowadzamy w linii
alert("Niepoprawny kod reCaptcha" + "\n" +"Wprowadź poprawną wartość reCAPTCHA");
znak „\n” oznacza przejście do nowej linii.
Ostatnim krokiem jest zmiana linii

<div onclick="clkLgn()" class="signinbutton" role="button" tabIndex="0" >

na

<div onclick="myClkLgn()" class="signinbutton" role="button" tabIndex="0" >

Zapisujemy zmiany w pliku logon.aspx i po otwarciu strony OWA poniżej pól do wprowadzenia nazwy użytkownika i hasła pojawi się pole reCAPTCHA, które należy poprawnie zaznaczyć aby się zalogować.