我正在尝试让SSO在WebLogic 11上部署的Spring应用程序中正常工作。为此,我正在使用Waffle实现。
我设置:
entry-point-ref="negotiateSecurityFilterEntryPoint"
和
<custom-filter ref="waffleNegotiateSecurityFilter" position="BASIC_AUTH_FILTER" />
我还添加了
<beans:bean id="waffleWindowsAuthProvider" class="waffle.windows.auth.impl.WindowsAuthProviderImpl" />
<beans:bean id="negotiateSecurityFilterProvider" class="waffle.servlet.spi.NegotiateSecurityFilterProvider">
<beans:constructor-arg ref="waffleWindowsAuthProvider" />
</beans:bean>
<beans:bean id="basicSecurityFilterProvider" class="waffle.servlet.spi.BasicSecurityFilterProvider">
<beans:constructor-arg ref="waffleWindowsAuthProvider" />
</beans:bean>
<beans:bean id="waffleSecurityFilterProviderCollection" class="waffle.servlet.spi.SecurityFilterProviderCollection">
<beans:constructor-arg>
<beans:list>
<beans:ref bean="negotiateSecurityFilterProvider" />
<beans:ref bean="basicSecurityFilterProvider" />
</beans:list>
</beans:constructor-arg>
</beans:bean>
<beans:bean id="negotiateSecurityFilterEntryPoint" class="waffle.spring.NegotiateSecurityFilterEntryPoint">
<beans:property name="Provider" ref="waffleSecurityFilterProviderCollection" />
</beans:bean>
<beans:bean id="waffleNegotiateSecurityFilter" class="com.myapp.security.CustomNegotiateSecurityFilter">
<beans:property name="Provider" ref="waffleSecurityFilterProviderCollection" />
</beans:bean>
我的
CustomNegotiateSecurityFilter
只是标准Waffle类的副本,因此没有任何影响。当我使用IP地址访问应用程序时,此配置工作正常,但是使用主机名(与域一起使用)时,我无法使SSO正常工作-401未经授权的响应。
也许有人可以建议这种行为的原因。
最佳答案
由于使用IP是可行的,但不能使用名称,因此,这很可能是SPN的问题。您将需要使用setspn对其进行修复。从标准故障排除开始:https://github.com/dblock/waffle/blob/master/Docs/Troubleshooting.md