我正在IIS7上运行asp IIS7 web服务。后者运行在Windows2008WindowsServer上。is 7/ web服务配置为asp .net模拟。工作进程所有者设置为网络服务。
web服务调用服务器上他/她的域帐户模拟的sqlplus.exe。我可以通过任务经理看到这一点。然而,当sqlplus启动时,oracle表示用户名/密码是错误的。
sqlplus.exe是这样启动的: sqlplu.exe /。如果我用用户帐户手动登录服务器并输入上面的语句,这很好,一切都很好。
发布于 2010-02-17 02:08:06
我相信你在这里遇到了“双跳”的问题。
您的第一跳是使用从客户端计算机到web服务器的模拟。第二个跳转是从web服务器到数据库服务器,在那里您试图将相同的凭据传递到数据库。
当您手动登录并运行sqlplus语句时,它只是从web服务器到数据库服务器的一次跳转。
以下引用自MSDN。请注意使用从客户端到web服务器的基本身份验证的建议。
当ASPX页面尝试使用位于与IIS服务器不同的服务器上的资源时,就会出现双跳问题。在我们的例子中,第一个" hop“是从web浏览器客户端到IIS ASPX页面;第二个跳转到Active Directory。需要主令牌。因此,IIS服务器必须知道客户端将主令牌传递给的密码。如果IIS服务器具有辅助令牌,则使用NTAUTHORITY\匿名帐户凭据。此帐户不是域帐户,对的访问非常有限。
使用辅助令牌的双跳发生,例如,当浏览器客户端通过使用NTLM身份验证对IIS ASPX页面进行身份验证时。在本例中,IIS服务器由于使用NTLM而具有密码的散列版本。如果IIS掉头并将凭据传递给Active Directory,IIS将传递散列密码。Active Directory无法验证密码,因此它使用NTAUTHORITY\匿名登录进行身份验证。
如果浏览器客户端使用基本身份验证来对IIS ASPX页进行身份验证,则IIS服务器具有客户端密码,并且可以制作主令牌以传递给Active。Active可以验证密码并对域用户进行身份验证。
https://stackoverflow.com/questions/2269561
复制相似问题