CXF,WS-Security和Spring:UserToken

时间:2011-03-07 16:55:27

标签: java spring cxf ws-security

我的websrervice使用身份验证,但问题是它是静态的,它是在XML文件中编写的,甚至是在实现CallbackHandler的类中。 我想执行我的web服务,但是使用用户将在控制台中输入的登录名和密码

这是我写用户的客户端部分:

<bean id="wss4jOutInterceptor" class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor">
    <property name="properties">
        <map>
            <entry key="action" value="UsernameToken Timestamp" />
            **<entry key="user" value="pT64f349"/>**
            <entry key="passwordType" value="PasswordDigest" />
            <entry>
                <key>
                    <value>passwordCallbackRef</value>
                </key>
                <ref bean="passwordCallback" />
            </entry>
        </map>
    </property>
</bean>

这就是我输入密码的地方:

public class ClientPasswordCallback implements CallbackHandler{

@Override
public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
    WSPasswordCallback callback = (WSPasswordCallback) callbacks[0];
    if(callback.getIdentifier().equals("pT64f349")){
        **callback.setPassword("pass");**
    }
}

}

Thnx很多

1 个答案:

答案 0 :(得分:1)

您可以调整ClientPasswordCallback来阅读ThreadLocal的用户输入(请参阅Javadocexample 1example 2)。

您必须先将输入填入ThreadLocal,然后才能在ClientPasswordCallback中阅读。