web-services - 如何向 grails cxf Web 服务添加安全性(用户名、密码)

标签 web-services security grails cxf

我创建了两个 grails 项目,一个用于服务器端 cxf Web 服务,另一个用于 cxf 客户端用于调用 Web 服务。

一切正常。

我可以从客户端代码调用 Web 服务并获得结果。

现在我想添加安全性,那么服务器和客户端 grails 代码会有什么变化?

我尝试按照 Christian Oestreich 在他的帖子中所说的应用安全性。

http://www.christianoestreich.com/2012/04/grails-cxf-interceptor-injection/
(Grails Cxf 拦截器注入(inject) 2.4.x-2.5.x)

应用安全的客户端代码如下

    ExampleService exampleService = new ExampleService()
    def port = exampleService.exampleServicePort
    Map ctx = ((BindingProvider)port).getRequestContext();
    ctx.put("ws-security.username", "pankaj");
    ctx.put("ws-security.password", "pankaj");
    println ".......... " + port.sayHello("pankaj")

但我收到如下错误
Error |
2014-11-06 18:33:15,411 [http-bio-8088-exec-4] ERROR errors.GrailsExceptionResolver  - SoapFault occurred when processing request: [GET] /WSDLDemoClient/wsdldemo/index
An error was discovered processing the <wsse:Security> header.. Stacktrace follows:
Message: An error was discovered processing the <wsse:Security> header.
Line | Method
->>   75 | unmarshalFault         in org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor

最佳答案

而不是上面提到的客户端代码,使用下面的代码让它工作。

    Map<String, Object> req_ctx = ((BindingProvider)hello).getRequestContext();
    req_ctx.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, WS_URL);

    Map<String, List<String>> headers = new HashMap<String, List<String>>();
    headers.put("Username", Collections.singletonList("pankaj"));
    headers.put("Password", Collections.singletonList("pankaj"));
    req_ctx.put(MessageContext.HTTP_REQUEST_HEADERS, headers);

关于web-services - 如何向 grails cxf Web 服务添加安全性(用户名、密码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26780611/

相关文章:

c# - ServiceStack服务请求设计

php - 无法连接到 WSDL

c# - 哈希密码 - 在 SQL Server 中存储为 Base 64 字符串 vs 存储为 varBinary

node.js - 如何保护 Node js API 的安全

grails - 如何在不连接互联网的情况下运行grails

java - 在 Spring Tool Suite 3.6.1 上安装 Groovy 1.8

grails - 在Grails中,哪里可以更改客户端的i18n默认消息?

c# - 如何在 C#.Net 中处理来自 Webservice 的海量 JSON 数据

java - 启用 C 应用程序作为 Web 服务

Php session 安全登录