gpt4 book ai didi

java - 如何从 Spring-WS 拦截器中的 SoapUI Auth 选项卡(HTTP header )获取用户名和密码?

转载 作者:行者123 更新时间:2023-12-01 11:54:24 25 4
gpt4 key购买 nike

我正在使用 spring-ws,我需要对我的 web 服务调用执行简单的用户名和密码验证。为此,我需要获取用户名和密码的默认 SOAP 头属性。我不知道如何使用 spring-ws 做到这一点,并且我花了很多时间试图弄清楚。

我使用 SoapUI 并通过在“Aut”选项卡中设置用户名和密码来发送它们。

我的拦截器拦截了我的调用,但我已经调试了 messageContext,但我不知道这些字段在哪里。

这是我的代码,它从未进入到 while 中的代码,因此迭代器在 hasNext 中返回 false。

 @Override
public boolean handleRequest(MessageContext messageContext, Object endpoint) throws Exception {
logger.info("Intercepting call");
SoapMessage soapMessage = (SoapMessage) messageContext.getRequest();
SoapHeader soapHeader = soapMessage.getSoapHeader();

Iterator<SoapHeaderElement> it = soapHeader.examineAllHeaderElements();
while(it.hasNext()) {
SoapHeaderElement element = it.next();
QName qname = element.getName();
logger.info("QName: " + qname.getLocalPart());
logger.info("Value? " + soapHeader.getAttributeValue(qname));
}

return true;
}

如果您愿意向我指出有关该主题的任何文档,或者更好的是一些示例,这将是一个很大的帮助。

非常感谢。

最佳答案

好的,所以我认为我已经找到了答案,我的问题不是代码,而是 SoapUI 的 eclipse 插件,它并没有真正发送授权 header 。我已经下载了桌面客户端并正确配置,现在我看到了标题。

启用该功能后,我编写了此代码,并且能够获取用户和密码:

TransportContext transportContext =  TransportContextHolder.getTransportContext();
HttpServletRequest servletRequest = ((HttpServletConnection) transportContext.getConnection()).getHttpServletRequest();
String authorizationHeader = servletRequest.getHeader("authorization");
String userAndPasswordBase64 = authorizationHeader.substring("Basic ".length());
String userAndPassword = new String(Base64.decodeBase64(userAndPasswordBase64));

int colonIndex = userAndPassword.indexOf(':');
String user = userAndPassword.substring(0, colonIndex);
String password = userAndPassword.substring(colonIndex + 1);

这个问题确实帮助我解开了这个问题:How to access HTTP headers in Spring-ws endpoint?

谢谢l

关于java - 如何从 Spring-WS 拦截器中的 SoapUI Auth 选项卡(HTTP header )获取用户名和密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28552128/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com