我们有一个Windows Server 2012 R2 OS上的IIS中运行的MVC应用程序,该应用程序使用域帐户来验证用户访问权限。这适用于除一个客户设置以外的大多数服务器。在PrincipalContext.ValidateCredentials期间获得通用的“服务器无法处理目录请求”。 IIS应用程序池使用对本地服务器具有管理员权限的域用户来执行所有事务。
为缩小导致问题的原因,我们已移植代码到winforms应用程序和powershell脚本。我们以应用程序池中使用的域用户身份登录到计算机,并运行了这两个程序。两者都返回了相同的错误。
但是,当我们使用域管理员登录到服务器时,不再引发异常,并且我们可以针对AD进行验证。
我们只想知道是什么导致了这种现象。任何帮助将不胜感激。
下面是我们制作的powershell脚本:
package com.stackoverflow.q53737175;
import static org.junit.Assert.*;
import org.junit.ClassRule;
import org.junit.Rule;
import org.junit.Test;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.AbstractFactoryBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.test.context.junit4.rules.SpringClassRule;
import org.springframework.test.context.junit4.rules.SpringMethodRule;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
@SuppressWarnings("javadoc")
public class Answer {
/** The Constant SPRING_CLASS_RULE. */
@ClassRule
public static final SpringClassRule SPRING_CLASS_RULE = new SpringClassRule();
/** The spring method rule. */
@Rule
public final SpringMethodRule springMethodRule = new SpringMethodRule();
@Autowired
MyClass myClass;
@Test
public void test() {
assertNotNull(this.myClass);
}
@Configuration
static class SpringConfig {
@Bean
public FactoryBean<MyClass> myClass() {
return new AbstractFactoryBean<MyClass>() {
@Override
public Class<?> getObjectType() {
return MyClass.class;
}
@Override
protected MyClass createInstance() throws Exception {
return new MyClass(MyClassDependency.create());
}
};
}
}
@NoArgsConstructor
@AllArgsConstructor
static class MyClass {
@Autowired
private MyClassDependency dependency;
}
static class MyClassDependency {
public static MyClassDependency create() {
return new MyClassDependency();
}
}
}