小编joh*_*ohn的帖子

在Spring-WS的xws-security中支持X509PKIPathv1

我正在尝试向现有的Web服务发送请求.此网络服务不受我的约束.此Web服务的安全策略要求我在SOAP请求中发送完整的证书链.我的证书链包含3个证书.证书链的设置没有问题,因为我能够测试它的有效性(并且已经这样做了).

此设置的安全配置(=在请求中发送完整的证书链)是:

<xwss:Sign id="signature">
   <xwss:X509Token 
        certificateAlias="alias" 
        keyReferenceType="Direct"
        valueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509PKIPathv1" />
</xwss:Sign>
Run Code Online (Sandbox Code Playgroud)

我试图通过Spring-WS实现这一目标.Spring-WS使用spring-ws-security来保证安全性.Spring-ws-security代表xws-security.

    <dependency>
        <groupId>org.springframework.ws</groupId>
        <artifactId>spring-ws-security</artifactId>
        <version>2.1.0.RELEASE</version>
        <exclusions>
            <exclusion>
                <groupId>org.apache.ws.security</groupId>
                <artifactId>wss4j</artifactId>
            </exclusion>            
            <exclusion>
                <groupId>com.sun.xml.wsit</groupId>
                <artifactId>xws-security</artifactId>
            </exclusion>            
        </exclusions>
     </dependency>
Run Code Online (Sandbox Code Playgroud)

Xws-security有两种版本:

    <dependency>
        <groupId>com.sun.xml.wsit</groupId>
        <artifactId>xws-security</artifactId>
        <version>1.3.1</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

    <dependency>
        <groupId>com.sun.xml.wss</groupId>
        <artifactId>xws-security</artifactId>
        <version>3.0</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

第一个由Spring WS Security使用.第二个是遗产.

在xws-security中应用我的XWSS配置是在名为BinarySecurityToken的类中完成的.BinarySecurityToken有一个名为的字段

valueType
Run Code Online (Sandbox Code Playgroud)

valueType的JavaDoc表示它支持X509PKIPathv1(以及其他).但是,正如这个二传手所说:

    protected void setValueType(String valueType) {
    if (!(MessageConstants.X509v3_NS.equals(valueType)||MessageConstants.X509v1_NS.equals(valueType))) { 
        log.log(Level.SEVERE,"WSS0342.valtype.invalid");
        throw new RuntimeException("Unsupported value type: " + valueType);
    }
    this.valueType = valueType;
}
Run Code Online (Sandbox Code Playgroud)

MessageConstants类(甚至)没有X509PKIPathv1的静态.当我运行我的代码时,我得到了预期的结果:

Unsupported value type: http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509PKIPathv1
Run Code Online (Sandbox Code Playgroud)

我能够查看遗产的源代码com.sun.xml.wss.xws-security:3.0.尽管我付出了努力,但我还没有找到它的源代码com.sun.xml.wsit.xws-security-1.3.1.不过我相信代码是一样的.我尝试了两个库,两者都给了我相同的例外.我尝试了它,使用默认的spring-ws-security并对两个库使用显式依赖声明(一次一个).

我的问题:

  1. 有没有人能够使用xws-security生成值为X509PKIPathv1的X509签名和一个Direct的keyReferenceType? …

java spring spring-ws x509

47
推荐指数
1
解决办法
2065
查看次数

xhr.readystate是什么意思=== 4

AJAX呼叫在之后完成是否正确xhr.readystate===4
这里说的是州complete.那是什么complete意思呢?

javascript ajax jquery

41
推荐指数
2
解决办法
3万
查看次数

Android:设备密度从某些设备返回为零

设备密度从某些设备返回0.以下代码用于计算设备密度:

WindowManager wm = (WindowManager) context
        .getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics metrics = new DisplayMetrics();
wm.getDefaultDisplay().getMetrics(metrics);
density = metrics.density;
Run Code Online (Sandbox Code Playgroud)

这导致了PlayStore中的一些崩溃.用户似乎正在使用:Galaxy Y Plus; Android版本4.0.3 - 4.0.4.还有一种名为wing-k70的设备存在问题.在一次崩溃中它是版本4.2.

请指教.

android

12
推荐指数
3
解决办法
228
查看次数

Android:以阿拉伯语格式显示数字

如何以阿拉伯语格式显示数字?所以,如果我有整数:1,2,3他们变成'1','2','3 '

android arabic

8
推荐指数
1
解决办法
5396
查看次数

如何获取TFS 2013中所有用户的列表

我正在使用Team Foundation Server(TFS)2013和Visual Studio 2012.我需要TFS中所有用户的列表.

有没有办法让TFS中的所有用户使用C#?

c# tfs visual-studio-2012 tfs2013

4
推荐指数
1
解决办法
6783
查看次数

REST查询中的UTF-8编码字符未正确呈现

我正在使用外部REST服务,它提供所有内容为UTF-8编码.

由于某种原因,我的应用程序无法正确处理响应.如果我拒绝回复,我会选择LuleÃ¥(应该是Luleå).

编辑:如果我转发(不改变)字符串到UI,同样的行为发生,例如:

flash.message = "Test" + integrationService.testEncoding()
Run Code Online (Sandbox Code Playgroud)

我所做的是在/ script文件夹中创建一个_Events.groovy文件并指定它

eventConfigureTomcat = { tomcat ->
    tomcat.connector.URIEncoding = "UTF-8"
    tomcat.connector.useBodyEncodingForURI = true
}
Run Code Online (Sandbox Code Playgroud)

我也有以下内容Config.groovy:

grails.views.gsp.encoding = "UTF-8"
grails.converters.encoding = "UTF-8"
Run Code Online (Sandbox Code Playgroud)

但这没有改变.答案仍然错误地显示出来.我不确定这是Grails的配置问题,嵌入式tomcat还是其他东西.我目前正在Windows 7上运行我的测试设置,但同样的问题发生在我在Centos上运行的服务器上.请指教.

编辑2:如果我使用curl使用REST服务,则在输出中正确呈现所有内容.

编辑3:我正在使用org.springframework.web.client.RestTemplateHttpComponents使用该服务:

private static final HttpHeaders requestHeaders
static{
    requestHeaders = new HttpHeaders()
    requestHeaders.set(HttpHeaders.CONTENT_TYPE, "application/json")
    requestHeaders.set(HttpHeaders.ACCEPT, "application/json")
    requestHeaders.set("Accept-Encoding", "gzip")
}

private final static RestTemplate restTemplate = new RestTemplate(new HttpComponentsClientHttpRequestFactory(
    HttpClientBuilder.create().build()))
...
...
public def testEncoding(){
    ResponseEntity<String> response = restTemplate.exchange(
            "https://www.url.com", HttpMethod.GET, new HttpEntity<Object>(requestHeaders),
            String.class) …
Run Code Online (Sandbox Code Playgroud)

rest grails character-encoding

3
推荐指数
1
解决办法
6512
查看次数