Как мне создать удаленную страницу входа в HTML для входа на целевой веб-сайт

#html #asp.net #login #remote-access #login-script

#HTML #asp.net #аутентификация #удаленный доступ #login-script

Вопрос:

Проблема: мне нужно создать простой автономный инструмент входа в систему с фрагментом HTML, который я могу использовать в другом домене, который затем получит доступ к моей целевой базе данных (используя их параметры API), отправив на нее запрос SSL. Если вход в систему выполнен успешно, он передается на целевую целевую страницу, если вход в систему не удался, он переходит на «плохую страницу входа», однако все это обрабатывается моей целью.

Итак, я хочу иметь возможность войти в www.target.com от www.example.com

  1. www.example.com Содержит код удаленного входа в систему (HTML-сайт)

  2. www.target.com Содержит базу данных пользователей и паролей

В моем targets web.config у меня есть LoginRemoteURLAllowed, а затем я могу установить URL-адрес запроса в соответствии с доменом, на котором находится мой фрагмент HTML.

Причина, по которой я хочу это сделать, заключается в том, что у меня есть два отдельных сайта с отдельными доменами. Один для общего общедоступного каталога продуктов, второй домен — это частный каталог только для пользователей, для доступа к которому вам необходимо войти.

У нас уже есть подобная система, однако я ее не проектировал, и я пытаюсь перепроектировать ее, чтобы создать отдельный html-файл, содержащий ядро входа, которое я могу использовать на других веб-сайтах.

Вот что я пытаюсь перепроектировать. использовать текущую рабочую модель (взятую непосредственно с примера веб-сайта с помощью инспектора кода).

HTML-код для управления вводом

 label>Example Login</label>                
<div id="formMC_pnl" class="group" onkeypress="javascript:return WebForm_FireDefaultButton(event, amp;#39;formMC_btnMCSubmitamp;#39;)">

<input name="formMC$txtMCUserName" type="text" value="Username" id="formMC_txtMCUserName" class="txtField" placeholder="Username" onfocus="if (this.value==amp;#39;Usernnameamp;#39;) { this.value=amp;#39;amp;#39; };" onblur="if (this.value==amp;#39;amp;#39;) { this.value=amp;#39;Usernameamp;#39; };" />

<input name="formMC$txtMCPassword" type="password" id="formMC_txtMCPassword" class="txtField pass" placeholder="Password" onfocus="if (this.value==amp;#39;Passwordamp;#39;) { this.value=amp;#39;amp;#39; };" onblur="if (this.value==amp;#39;amp;#39;) { this.value=amp;#39;Passwordamp;#39; };" />

<input type="submit" name="formMC$btnMCSubmit" value="Login" id="formMC_btnMCSubmit" class="btnSubmit" />
  

Теперь я предполагаю, что он использует веб-форму для подключения к моему сайту, но я не уверен, как он это делает. Вот пример используемой веб-формы

 function WebForm_FireDefaultButton(event, target) {
if (event.keyCode == 13) {
    var src = event.srcElement || event.target;
    if (src amp;amp;
        ((src.tagName.toLowerCase() == "input") amp;amp;
         (src.type.toLowerCase() == "submit" || src.type.toLowerCase() == "button")) ||
        ((src.tagName.toLowerCase() == "a") amp;amp;
         (src.href != null) amp;amp; (src.href != "")) ||
        (src.tagName.toLowerCase() == "textarea")) {
        return true;
    }
    var defaultButton;
    if (__nonMSDOMBrowser) {
        defaultButton = document.getElementById(target);
    }
    else {
        defaultButton = document.all[target];
    }
    if (defaultButton amp;amp; typeof(defaultButton.click) != "undefined") {
        defaultButton.click();
        event.cancelBubble = true;
        if (event.stopPropagation) event.stopPropagation();
        return false;
    }
}
return true;
  

}

Итак, теперь мне просто интересно, можно ли создать автономный удаленный вход в html для доступа к моей целевой базе данных и проверки / входа пользователя. Буду признателен за любую помощь, я постарался предоставить как можно больше информации об этой проблеме. Дайте мне знать, если я смогу что-нибудь уточнить. Более или менее я хочу воспроизвести эту рабочую модель, чтобы я мог добавить ее в www.example.com и войдите в систему www.target.com из примера.

Ответ №1:

Вы не можете аутентифицировать междоменный.

В лучшем случае вы могли бы заставить сайт попасть в базу данных, подтвердить имя пользователя и пароль, а затем сгенерировать идентификатор GUID, сохранить его в таблице пользователей и вернуть пользователю для сохранения в файле cookie.

Как только файл cookie будет возвращен и создан, перенаправьте его на целевой сайт. Затем проверьте идентификатор GUID в файле cookie на земле. Для этого также потребуется либо страница, либо код в global.asax, либо страница authentication.cs в AppCode, которая проверяет и либо создает сеанс, либо перенаправляет.

Если идентификатор GUID недействителен, перенаправьте, т.е. string.empty или не соответствует идентификатору GUID в базе данных.

Комментарии:

1. Я не думаю, что я пытаюсь аутентифицировать кросс-домены, а передаю информацию, введенную с одного (имя пользователя и пароль), и отправляю ее на другой целевой домен, который обрабатывает аутентификацию. Цель настроена на прием параметров удаленного входа через заданные параметры API. После входа в систему я не возвращаюсь на исходный сайт, вместо этого я вошел в систему на своем целевом сайте. Процесс уже работает на сайте, который мне был предоставлен, мне просто сложно перепроектировать его, чтобы воссоздать процесс удаленного входа в систему. Пока спасибо за помощь.

2. @user2665682 но как вы сохраняете междоменную аутентификацию. Плюс сеансы не переходят с домена на домен, поэтому единственный способ, которым я знаю, как это сделать, — это идентификатор GUID и файл cookie, а затем аутентификация на земле.

3. Понял. Можете ли вы порекомендовать какие-либо учебные пособия? К сожалению, это кажется довольно сложным. Не уверен, как исходный разработчик выполнил это в моем примере, если только два веб-сайта не являются частью одного домена. Я полагаю, что они размещены на одном сервере. Как вы думаете, можно ли в качестве альтернативы создать микросайт HTML, который обрабатывает учетные данные для входа как часть целевого домена, а не отображать этот микросайт на примере веб-сайта. Т.е. Форма входа в систему (микросайт) находится по адресу www.target.com/MicroLogin.aspx чем встраивать это в www.example.com поэтому, как только вы войдете в систему, онперенаправляет вас на цель.

4. Поскольку нам действительно не нужна информация для входа на пример сайта, это может быть возможно. Однако я бы хотел, чтобы он закрывал старый сайт и перенаправлял его на новый сайт после входа в систему, а не просто перенаправлял микросайт.

5. @user2665682 вот почему я говорил, что при аутентификации с сайта (поскольку базе данных все равно, с какого сайта вы заходите), когда аутентификация пройдет успешно, обновите таблицу аутентификации пользователя ссылкой GUID social.msdn.microsoft.com/Forums/vstudio/en-US /… затем верните этот идентификатор пользователя, выполняющего аутентификацию, сохраните его в файле cookie, а затемперенаправить их на сайт. Попросите сайт проверить ссылку на cookie для пользователя и создать сеанс на земле.