小编Rob*_*ert的帖子

从 Spring WS Interceptor 获取请求参数

我正在使用带有 Spring WS 的 Jaxb 2,并且我有一个拦截器,它被定向到一个特定的有效负载,它工作正常。

这里我的需求是从我的拦截器的handleRequest方法中读取请求参数。我知道这应该是相当直接的。但是无法找到读取请求参数的方法。目前我的 handleRequest 方法如下所示。

@Override
public boolean handleRequest(MessageContext messageContext, Object endpoint)
    throws Exception {

    boolean proceed = true;

    SaajSoapMessage saajSoapMessage = 
                    (SaajSoapMessage) messageContext.getRequest();

    SOAPMessage soapMessage = saajSoapMessage.getSaajMessage();

    Document doc = saajSoapMessage.getDocument();

    Element element = doc.getElementById("request");
}
Run Code Online (Sandbox Code Playgroud)

我的端点类的相关部分是

@PayloadRoot(namespace = NAMESPACE, localPart = "confirOrderRequest")
public @ResponsePayload ConfirmOrderResponse handleConfirmOrder(
    @RequestPayload ConfirmOrderRequest confirmOrderRequest) {

     ...........
}
Run Code Online (Sandbox Code Playgroud)

这里我的要求是获取ConfirmOrderRequest拦截器 handleRequest 方法中附带的 orderId ,有没有办法直接做到这一点,或者我需要为此做一些 XML 解析?

java web-services spring-ws jaxb

2
推荐指数
1
解决办法
3617
查看次数

使用Spring Security进行双因素身份验证,例如Gmail

在这里,我的方案有点类似于Gmail的双因素身份验证.当用户成功登录(SMS代码发送给用户)时,他将被另一页面挑战以输入SMS代码.如果用户正确获取SMS代码,则会显示安全页面(如Gmail收件箱).

我对此做了一些研究,建议不是在登录时给ROLE_USER,给他PRE_AUTH_USER并显示他输入SMS代码的第二页; 成功后给他们ROLE_USER.

但是,我的问题是Spring有InsufficientAuthenticationException,在这种情况下我们不会使用它.在我的场景中是否还有其他更好的方法来实现双因素身份验证?

PS我有一些定制的弹簧安全配置.在我的登录页面,除了用户名和密码,我也有Recaptcha验证,我的authenticationProviderm authenticationSuccessHandler,logoutSuccessHandler,accessDeniedHandler都是自定义的.

spring spring-security

2
推荐指数
1
解决办法
5293
查看次数

PHP SHA-256检查base64中的和以匹配Java

我有java程序,它计算SHA-256校验和如下.例如,如果我提供输入abcd123ABCD00-4000,则输出0QtyIu4B + lU + TLqM/zfJz5ULVpyXgfLRs5mKXCQvbHM =.它还匹配在线支票和计算器.

但是我使用的PHP代码与它不匹配.

PHP代码:

$s = 'abcd123ABCD00-4000';
$signature = base64_encode(hash_hmac("sha256", $s, True)); 
print  base64_encode($signature); 
Run Code Online (Sandbox Code Playgroud)

输出:TWpRM1pEWXpaVFl4TURoallqTXdPRFV6WVRrNU5XVTRNRGxoWkRJMU1XWTVNREk1TnpBeU4ySXhaR0psTW1ZMk16Y3hPRE01WldFelkySXhOalJrWXc9PQ ==

Java代码:

private static String getSHA256Hash(String text) {


    String hash = null;
    MessageDigest md = null;


    try {

      md = MessageDigest.getInstance("SHA-256");

      md.update(text.getBytes("UTF-8"));

      byte[] shaDig = md.digest();
      // hash = Hex.encodeHexString(shaDig);
      hash = Base64.encodeBase64String(shaDig);

    } catch (NoSuchAlgorithmException ex) {


    } catch (UnsupportedEncodingException e) {

      e.printStackTrace();
    }
    return hash;

  }
Run Code Online (Sandbox Code Playgroud)

输出:0QtyIu4B + lU + TLqM/zfJz5ULVpyXgfLRs5mKXCQvbHM =

这里我想要的是获得PHP中的等效结果(即更改PHP代码以匹配Java程序的结果[我将无法更改Java代码].任何帮助表示赞赏

php java sha

2
推荐指数
1
解决办法
2611
查看次数

标签 统计

java ×2

jaxb ×1

php ×1

sha ×1

spring ×1

spring-security ×1

spring-ws ×1

web-services ×1