Поиск

понедельник, 23 ноября 2020 г.

Integrate reCAPTCHA Validation to Exchange 2019.


Создание капчи (Google reCAPTCHA) для Exchange 2019 OWA/ECP.

Для создания капчи перейдите по ссылке - Google reCAPTCHA:

  • Ярлык - любое удобное имя;
  • Тип reCAPTCHA:Версия 2 – флажок;
  • Сгенерируется два ключа, сохраните: "Ключ сайта" и "Секретный ключ";
  • Домены: укажите корневой домен, поддомены будут включены автоматически;
  • Укажите адреса эл. почты владельцев.
Настройка на Exchange Server 2019:

  • Перейдите в директорию: C:\Program Files\Microsoft\Exchange Server\V15\FrontEnd\HttpProxy\owa\auth
  • Создайте файл: "recaptcha.aspx" содержания, не забыв указать "Секретный ключ":

<% @ Page AspCompat=True Language = "VB" %>

<%

Dim strPrivateKey As String = "ВАШ_СЕКРЕТНЫЙ_КЛЮЧ_reCAPTCHA"

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)

%>

  • Создайте резервную копию "logon.aspx", например, "logon.aspx.backup".
  • В файле logon.aspx найдите строку по "form action".

Измените содержимое "action", чтобы оно было пустым, в этом случае, пользователи или роботы не смогут напрямую заходить в "OWA/ECP" до отправки формы.

Старая строка:

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

Строка после изменения:

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

  • В файле logon.aspx найдите строку по "<div><input id="passwordText""

После данной строки вставьте новую функцию "myClkLgn", не забыв указать "Ключ сайта":

<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("Не подтверждена капча," + "\n" +"reCAPTCHA не корректна!");
}
}
</script>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
<div class="g-recaptcha" data-sitekey="ВАШ_КЛЮЧ_САЙТА_reCAPTCHA"></div>
</td>
</tr>

  • В файле logon.aspx найдите строку "<div onclick="clkLgn()" class="signinbutton".

"clkLgn" изменяется, чтобы соответствовать ранее созданной функции JavaScript с именем "myClkLgn".

Старая строка:

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

Строка после изменения:

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

  • Сохраните изменения в файле  logon.aspx и проверьте наличие капчи.