CXF、WS-Security 和 Spring:UserToken

发布于 2024-10-21 05:33:15 字数 1217 浏览 9 评论 0原文

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

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

<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");**
    }
}

}

非常感谢

My websrervice works using authentication, but the problem is that it's static, it's written in the XML file, and even in the class that implements CallbackHandler.
I want to execute my webservice but by using a login and a password that user will enter in a console

This is the client part where I wrote the user :

<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>

And this is where I put my password :

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 a lot

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

面如桃花 2024-10-28 05:33:15

您可以调整您的 ClientPasswordCallback 来从 ThreadLocal 读取用户输入(请参阅 Javadoc示例 1示例 2)。

您必须首先将输入填充到 ThreadLocal 中,然后您可以在 ClientPasswordCallback 中读取它们。

You could maybe adapt your ClientPasswordCallback to read the user inputs from a ThreadLocal (see Javadoc and example 1 or example 2).

You'll have first to fill the inputs into the ThreadLocal and then you can read them in the ClientPasswordCallback.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文