当前位置: 首页 > 知识库问答 >
问题:

CXF运行时和IBM WebSphere V8.5.5中的Web服务基本身份验证问题

慕凡
2023-03-14
    null

bean定义文件的摘录如下:

<jaxws:endpoint id="VPMSWebService"
        implementor="com.xxxxx.CustomServiceImpl" address="/vWebService">
        <jaxws:features>
            <wsa:addressing xmlns:wsa="http://cxf.apache.org/ws/addressing" />
        </jaxws:features>
        <jaxws:properties>
            <entry key="jaxb-validation-event-handler">
                <bean class="com.xxxxx.CXFValidationEventHandler" />
            </entry>
        </jaxws:properties>     
        <jaxws:inInterceptors>
            <bean class="com.xxxxxx.IncomingAuthenticationInterceptor"/>
        </jaxws:inInterceptors>
        <jaxws:inFaultInterceptors>
            <bean class="com.xxxxx.IncomingAuthenticationFaultInterceptor"/>
        </jaxws:inFaultInterceptors>      
        <jaxws:handlers>
            <bean class="com.xxxxxxx.interceptors.AuthenticationHandler"/>
        </jaxws:handlers>  
</jaxws:endpoint>

在部署描述符中以声明方式引入基本身份验证,如下所示:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>web service resource</web-resource-name>
        <url-pattern>/*</url-pattern>
        <http-method>GET</http-method>
        <http-method>POST</http-method>     
    </web-resource-collection>
    <auth-constraint>
        <role-name>SvcLayerUser</role-name>
    </auth-constraint>
    <user-data-constraint>
        <transport-guarantee>NONE</transport-guarantee>
    </user-data-constraint>
  </security-constraint>
  <security-role>
    <role-name>SvcLayerUser</role-name>
  </security-role>
  <login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>Authentication</realm-name>
  </login-config>

当使用SOAPUI作为具有正确用户名/密码对的客户机调用服务时,调用是正常的,并将正确的SOAP响应返回给调用程序。如果问题出在XML上,则分别返回SOAP Fault。打开调试后,我们可以导航应用程序的完整流程。

>

  • 当错误用户名或错误密码发生异常时,为什么我们的基于CXF的组件不会被调用?为什么WebSphere容器会引发异常并直接将控件返回给调用方?

    我们应该在EAR上做什么更改来处理上面的WAS容器异常,这样我们就可以将它变成一个详细的SOAP错误,并返回给调用者更多的信息?

  • 共有1个答案

    高墨一
    2023-03-14

    当您进行基本身份验证时,它甚至在到达webcontainer之前就在服务器基础结构中进行检查,并且由于container已经知道您的用户没有经过身份验证,因此它甚至不调用web服务引擎。

    您需要自定义登录过程来拦截该请求(例如自定义登录模块),或者在处理程序中实现整个登录逻辑(例如调用WSLogin),这两种方法都太宽泛,无法在此讨论。

    首先,您可以在WebSphere Application Server中检查此页面的高级身份验证

     类似资料:
    • 几天没有任何进展,我需要你的帮助。 使用GWT,我试图与REST服务器通信,服务器位于不同的URL上(需要CORS)<我的配置:服务器spring boot 1.3.3 客户端-GWT 1.7-restygwt 2.0.3 当我在Spring中禁用安全性时,我可以在我的GWT客户端中获取数据。 但是当我启用它时,我总是收到401个请求。REST URL请求直接在Web浏览器中工作(带有其身份验证对

    • 问题内容: 我尝试使用CXF用户指南使它正常工作,但是我没有运气。 我正在尝试使用Java代码调用Web服务。 问题答案: JAX-WS规范对此进行了介绍。基本上,将用户名/密码设置为请求上下文中的属性: 运行时将它们放入HTTP标头。

    • 我已经配置了一个Spring Cloud Config服务器来强制进行基本身份验证,下面是我的application.yml文件: 我遇到的问题是,当我启动服务器时:mvn spring-boot:run

    • 问题内容: 我正在使用Python在系统级别的Linux中进行项目。因此,我想知道,如果我以普通用户身份运行代码,并且正在访问系统文件,那么它应该具有root权限,那么我如何提示输入root密码并以超级用户身份运行其他代码。我想知道,如何以超级用户身份以密码提示运行python脚本。 任何帮助将不胜感激。先感谢您.. 问题答案: 您可以做的另一件事是,如果脚本不是以root身份执行的,则脚本会自动

    • react中的前端 基于Spring Boot“resource-service”的后端服务 keycloak 其他后端服务(使用者) 前端和使用者服务都使用REST API与后端通信。我们使用Keycloak作为我们的用户管理和身份验证服务。 我们希望通过提供web应用程序和服务流来将基于Spring的服务“资源服务”与Keycloak集成: > 基于web application-react的

    • 问题内容: 从HttpClient 4.3开始,我一直在使用HttpClientBuilder。我正在连接到具有基本身份验证的REST服务。我将凭据设置如下: 但是,这不起作用(我正在使用的REST服务返回401)。怎么了? 问题答案: 从此处的 抢先身份验证 文档中: http://hc.apache.org/httpcomponents-client- ga/tutorial/html/aut