Аутентификация HTTP (Основной или Обзор) в Классике ASP через [закрытый] IIS

Хорошо, ребята, проблема, связанная с невозможностью отображения, была решена, и вот код.

function fetchRushIv(officeName){
  var spreadSheet = SpreadsheetApp.getActiveSpreadsheet();
  var currSheet = spreadSheet.getSheetByName('OG_Database');
  currSheet.activate();
    var data = currSheet.getRange(5, 1, currSheet.getLastRow(), 
currSheet.getLastColumn()).getValues();

 var html="<style>th,td{border:1px solid #000;padding:5px;}</style> 
 <table>";;
  for(var i=0;i<data.length;i++){
       if(data[i][0]=="Office Name" || data[i][0]==officeName){
         html+='<tr>';
      for(var j=0;j<data[1].length;j++){
      html += "<td>"+data[i][j]+"</td>";
      }
      html+= "</tr>";
}

}
html += "</table>"

  return html ;
}

HTML-часть с исправленной ошибкой выглядит следующим образом:

<script>
function openCity(evt, cityName) {
  var i, tabcontent, tablinks;
  tabcontent = document.getElementsByClassName("tabcontent");
  for (i = 0; i < tabcontent.length; i++) {
    tabcontent[i].style.display = "block";
   google.script.run.withFailureHandler(failed).
withSuccessHandler(displayData).fetchRushIv(cityName);
  }
  tablinks = document.getElementsByClassName("tablinks");
  for (i = 0; i < tablinks.length; i++) {
    tablinks[i].className = tablinks[i].className.replace(" active","");
  }
  document.getElementById(cityName).style.display = "block";
  evt.currentTarget.className += " active";

 } 

function displayData(table){
document.getElementById('customers').innerHTML=table;
}

function failed(e){
alert("error:"+e);
}
</script>
8
задан Alexandros Marinos 16 October 2008 в 11:33
поделиться

3 ответа

Базовую аутентификацию HTTP можно выполнять в чистом классическом ASP VBScript.

Вам понадобится что-то для декодирования base 64. Вот чистая реализация VBScript . Вам также необходимо убедиться, что в вашей конфигурации IIS вы отключили «Обычная проверка подлинности» и «Встроенная проверка подлинности Windows», поскольку они будут мешать тому, что вы получите обратно в заголовке HTTP_AUTHORIZATION.

Вот пример реализации, которая просто повторяет имя пользователя и пароль.

<%@LANGUAGE="VBSCRIPT"%>

<!--#include file="decbase64.asp" -->

<%
Sub Unauth()
    Call Response.AddHeader("WWW-Authenticate", "Basic realm=""SomethingGoesHere""")
    Response.Status = "401 Unauthorized"
    Call Response.End()
End Sub

Dim strAuth
strAuth = Request.ServerVariables("HTTP_AUTHORIZATION")

If IsNull(strAuth) Or IsEmpty(strAuth) Or strAuth = "" Then
    Call Unauth
Else 
    %>
    <html>
    <body>
    <% 
        Dim aParts, aCredentials, strType, strBase64, strPlain, strUser, strPassword
        aParts = Split(strAuth, " ")
        If aParts(0) <> "Basic" Then
            Call Unauth
        End If
        strPlain = Base64Decode(aParts(1))
        aCredentials = Split(strPlain, ":")
    %>
    <%= Server.HTMLEncode(aCredentials(0) & " - " & aCredentials(1)) %>
    </body>
    </html>
    <%
End If
%>

Привязка имени пользователя и пароля к чему-то значимому оставлена ​​в качестве упражнения для читателя.

10
ответ дан 5 December 2019 в 13:02
поделиться

Привет Вы пытаетесь получить список пользователей от базы данных или использовать основанные на сети полномочия на сервере HTTP?

Если Вы используете использование базы данных ODBC и DSN

Dim DatabaseObject1
Set DatabaseObject1 = Server.CreateObject("ADODB.Connection")
DatabaseObject1.Open("DSN=DSNname;")

Если Вы будете желать диалоговое окно пароля (с сервера), то необходимо будет изменить настройки IIS для хорошего руководства по этому..

http://www.authenticationtutorial.com/tutorial/

0
ответ дан 5 December 2019 в 13:02
поделиться

По определению Аутентификация HTTP - что-то, что требует WebServer, я сомневаюсь, что Вы найдете решение, которое не приводит ни к каким применяемым Настройкам IIS.

Веб-браузер соединится с Вашим веб-сайтом, и если Ваш сервер не ответит кодом ответа HTTP HTTP/1.1 401 Несанкционированный, обзор не пройдет через учетные данные.

Вы могли попытаться вызвать код ответа 401 и установить заголовок

   WWW-Authenticate: Basic realm="SomethingGoesHere"

Затем браузер предложит пользователю имя пользователя и пароль, но будет отправлен по открытому тексту в браузер (base64 закодированный), как это:

Authorization: Basic YnJpYW5iOmJvYmJ5Ym95

Который переводится от Base64 до:

brianb:bobbyboy

Я не знаю, будет ли у Вас доступ к заголовку Авторизации из Вашей ASP-страницы, или если веб-сервер собирается волноваться, потому что кто-то пытается передать учетные данные ему, когда не ожидание его, но могло стоить попытки...

3
ответ дан 5 December 2019 в 13:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: