ASP Classic IIS 7身份验证问题

时间:2013-07-29 21:33:25

标签: authentication iis-7 asp-classic

我是Web应用程序开发的新手。我已经自己编写了很多脚本(大多数VBscript),并且做了大量的Web开发但是我坚持使用我构建的ASP Classic页面的权限。我在我的Web服务器之外构建和测试的工具非常简单地从循环中的服务器列表中提取SQL服务器,创建/打开ado连接,执行SQL查询,使用get字符串解析结果并确定查询是否顺利完成。出于某种原因,当我将其部署到我的Web服务器时,它尝试使用Web服务器的机器acct'Domain \ ServerName $'来运行该页面。这会导致查询失败,因为计算机帐户没有权限我正在尝试运行此查询的sql服务器。

长话短说,如何强制我的ASP页面使用特定的凭据?我认为它是IIS中的AppPoolPin,但对我来说似乎并不是这样,因为我已将该帐户设置为一个PIN,该PIN对我正在尝试查询的SQL服务器有所帮助,没有更改,我的asp页面仍然使用机器acct'Domain \ ServerName $'。

这是我的代码(出于安全目的而略微剥离)

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0     Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<%
strFilePath = "\\server\path\to\list\"
Set Fso = CreateObject("Scripting.FileSystemObject")
Set InputFile = fso.OpenTextFile(strFilePath & "SQLServerList.txt" , 1)

Do While Not (InputFile.atEndOfStream)
On Error Resume Next
ServName = InputFile.ReadLine

Set myConn = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset") 

DB_CONNECT_STRING = "Provider=SQLOLEDB.1;Data Source=" & ServName & ";Initial Catalog=Master;Integrated Security=SSPI"

myConn.Open DB_CONNECT_STRING
objRecordSet.Open "select @@VERSION", myConn 

Rows = objRecordSet.GetString(,,"</td><td>","</td></tr><tr><td>","&nbsp;")


 If (InStr(Rows,"Microsoft"))=1 Then %>

      <table border="1" width="100%">
      <tr>
        <td><%Response.Write ServName%></td>
        <td><%Response.Write "Online"%></td>
      </tr>
    </table>
<%Else%>
            <table border="1" width="100%">
      <tr>
        <td><%Response.Write ServName%></td>
        <td><%Response.Write "Failed"%></td>
      </tr>
    </table>
<%
End If

Rows = ""
Set objRecordSet = Nothing
myConn.Close
Set myConn = Nothing

Loop 

%>


</body>
</html>

所以我愿意接受任何建议。我想知道如何强制此页面使用凭据,而不显然在我的连接字符串中包含登录名和密码。我绝对不能那样做。

提前感谢您的帮助。对不起,很长的帖子。在我发布之前,我确实环顾了一会儿试图解决这个问题。

1 个答案:

答案 0 :(得分:0)

创建新用户帐户:

  • [app pool user identity]是用户:app_pool_blahblahblah,pw:xxxxxx

在应用程序池中,高级设置:

  • 将.Net Framework版本设置为&#34; v2.0&#34; &lt; - 修复了默认asp doc无效的问题!
  • 设置&#34;启用32位应用程序&#34;为真。
  • 将托管管道模式设置为&#34; Classic&#34;。
  • 在Process Model下,将Identity更改为&#34; [app pool user identity]&#34;我们创建的帐户。
  • 确保&#34;加载用户个人资料&#34;设置为FALSE。
  • 确保&#34;最大的工作流程&#34;是&#34; 1&#34;。

在IIS 7.5网站下:

  • 身份验证 - &gt;编辑&#34;匿名身份验证&#34;并设置为应用程序池标识。

设置&#34;修改&#34;以下文件夹的[app pool用户标识]权限:

  • 您的网站
  • WINDOWS \ TEMP
  • 的Inetpub \ temp中
  • 的Inetpub \ mailroot
  • 仅在出现问题时:windows \ serviceprofiles \ networkservice \ AppData \ Local \ Temp?