Spring security 春季天气预报;无法对安全令牌进行身份验证或授权;
我正在使用SpringWS安全性为web服务创建java客户机使用者 我的请求SOAP(我在SOAP UI中使用) 调试应用程序时,我会注意到此元素正在崩溃:Spring security 春季天气预报;无法对安全令牌进行身份验证或授权;,spring-security,soapui,spring-ws,soap-client,Spring Security,Soapui,Spring Ws,Soap Client,我正在使用SpringWS安全性为web服务创建java客户机使用者 我的请求SOAP(我在SOAP UI中使用) 调试应用程序时,我会注意到此元素正在崩溃: GetUserRequest request = new GetUserRequest(); request.setIdentifier(user.getIdentifier()); request.setPassword(user.getPassword()); GetUserRespon
GetUserRequest request = new GetUserRequest();
request.setIdentifier(user.getIdentifier());
request.setPassword(user.getPassword());
GetUserResponse response = new GetUserResponse();
/* Crashing here. */
response = (GetUserResponse) getWebServiceTemplate().marshalSendAndReceive(request);
仅供参考:我总是在SpringWS中看到这个具有安全性的用户列表,但是如果有很多用户试图访问该列表,该怎么办呢
WS-[servlet名称]-servlet.xml
<bean name="webserviceTemplate" class="org.springframework.ws.client.core.WebServiceTemplate">
<property name="defaultUri" value="http:/localhost:8080/myws-ws/" />
<property name="marshaller" ref="marshaller" />
<property name="unmarshaller" ref="unmarshaller" />
<property name="interceptors">
<list>
<ref local="wsSecurityInterceptor" />
</list>
</property>
</bean>
<oxm:jaxb2-marshaller id="marshaller"
contextPath="org.example.bean.schema" />
<oxm:jaxb2-marshaller id="unmarshaller"
contextPath="org.example.org.bean.schema" />
<bean id="client" class="example.client.impl.EfactClientImpl">
<property name="webServiceTemplate" ref="webserviceTemplate" />
</bean>
<bean id="wsSecurityInterceptor" class="org.springframework.ws.soap.security.wss4j.Wss4jSecurityInterceptor">
<property name="securementActions" value="UsernameToken"/>
</bean>
<bean id="callbackHandler" class="org.springframework.ws.soap.security.wss4j.callback.SimplePasswordValidationCallbackHandler">
<property name="users">
<props>
<prop key="Bert">Ernie</prop>
<prop key="Mickey">Mouse</prop>
</props>
</property>
</bean>
厄尼
老鼠
如何解决此不受支持的CallbackException异常?您必须在调用时指定SecurementUsername和SecurementPassword。这是一个编程示例:
WebServiceTemplate webServiceTemplate = new WebServiceTemplate();
webServiceTemplate.setDefaultUri(uri);
Wss4jSecurityInterceptor interceptor = new Wss4jSecurityInterceptor();
interceptor.setSecurementActions(securementActions);
interceptor.setSecurementMustUnderstand(true);
interceptor.setSecurementUsername(usuario);
interceptor.setSecurementPassword(contrasena);
webServiceTemplate.setInterceptors(new ClientInterceptor[] {interceptor});
当我从CFX2.2.X升级到2.7.X时,我遇到了这个错误。由于功能升级,服务器端代码无法读取密码,因此服务器收到的密码为空。确保服务器收到正确的用户名和密码,这将解决此问题 对不起,我只是编辑了我的问题。
GetUserRequest request = new GetUserRequest();
request.setIdentifier(user.getIdentifier());
request.setPassword(user.getPassword());
GetUserResponse response = new GetUserResponse();
/* Crashing here. */
response = (GetUserResponse) getWebServiceTemplate().marshalSendAndReceive(request);
<bean id="callbackHandler" class="org.springframework.ws.soap.security.wss4j.callback.SimplePasswordValidationCallbackHandler">
<property name="users">
<props>
<prop key="Bert">Ernie</prop>
<prop key="Mickey">Mouse</prop>
</props>
</property>
</bean>
WebServiceTemplate webServiceTemplate = new WebServiceTemplate();
webServiceTemplate.setDefaultUri(uri);
Wss4jSecurityInterceptor interceptor = new Wss4jSecurityInterceptor();
interceptor.setSecurementActions(securementActions);
interceptor.setSecurementMustUnderstand(true);
interceptor.setSecurementUsername(usuario);
interceptor.setSecurementPassword(contrasena);
webServiceTemplate.setInterceptors(new ClientInterceptor[] {interceptor});