2011-01-06 4 views
0

J'ai une tâche assez simple à accomplir - Je dois configurer la sécurité pour les services Web (authentification de base avec codage en dur dans l'ID utilisateur WLES et mot de passe). J'ai mis le web.xml (voir le fragment de code ci-dessous) mais j'ai du mal à configurer WebLogic. J'ai ajouté IdentityAssertionAuthenticator Authentication Provider, l'ai défini comme obligatoire, DefaultAuthenticator modifié comme facultatif et je suis allé à la sécurité de l'application déployée et j'ai défini le rôle sur "thisIsUser" et à un moment donné cela a fonctionné, mais plus (j'ai redéployé le fichier war de la même manière mais sans succès.) J'apprécierais grandement pour votre aide. web.xmlComment configurer WebLogic 10.3.3. sécurité pour les services Web JAX_WS?

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    id="PC3-WS" version="2.5"> 
    <display-name>PC3-WS</display-name> 
    <session-config> 
     <session-timeout>30</session-timeout> 
    </session-config> 
    <security-constraint> 
     <display-name>SecurityConstraint</display-name> 
     <web-resource-collection> 
      <web-resource-name>PC3-WS</web-resource-name> 
      <url-pattern>/PC3-WS</url-pattern> 

     </web-resource-collection> 

     <auth-constraint> 
      <role-name>basicGroup</role-name> 
     </auth-constraint> 
     <user-data-constraint> 
      <transport-guarantee>NONE</transport-guarantee> 
     </user-data-constraint> 

    </security-constraint> 

    <security-role> 
     <role-name>basicGroup</role-name> 
    </security-role> 

    <login-config> 
     <auth-method>BASIC</auth-method> 
     <realm-name>myrealm</realm-name> 
    </login-config> 
</web-app> 

weblogic.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    id="PC3-WS" version="2.5"> 
    <display-name>PC3-WS</display-name> 
    <session-config> 
     <session-timeout>30</session-timeout> 
    </session-config> 
    <security-constraint> 
     <display-name>SecurityConstraint</display-name> 
     <web-resource-collection> 
      <web-resource-name>PC3-WS</web-resource-name> 
      <url-pattern>/PC3-WS</url-pattern> 

     </web-resource-collection> 

     <auth-constraint> 
      <role-name>basicGroup</role-name> 
     </auth-constraint> 
     <user-data-constraint> 
      <transport-guarantee>NONE</transport-guarantee> 
     </user-data-constraint> 

    </security-constraint> 

    <security-role> 
     <role-name>basicGroup</role-name> 
    </security-role> 

    <login-config> 
     <auth-method>BASIC</auth-method> 
     <realm-name>myrealm</realm-name> 
    </login-config> 
</web-app> 

La liste des authentificateurs:

  • DefaultAuthenticator
  • DefaultIdentityAssert

Maintenant, je ha ve exception:

WS spec-version:2.5], request: [email protected][ 
GET /PC3-WS/MetadataService?WSDL HTTP/1.1 
User-Agent: Java1.6.0_22 
Accept: text/html, image/gif, image/jpeg, */*; q=.2 
Connection: Keep-Alive 

]] Root cause of ServletException. 
java.lang.NullPointerException 
    at weblogic.wsee.jaxws.JAXWSDeployedServlet.init(JAXWSDeployedServlet.java:45) 
    at javax.servlet.GenericServlet.init(GenericServlet.java:241) 
    at weblogic.servlet.internal.StubSecurityHelper$ServletInitAction.run(StubSecurityHelper.java:283) 
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) 
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121) 
    Truncated. see log file for complete stacktrace 
> 
java.lang.RuntimeException: weblogic.testclient.WsdlParseFailedException: Unable to parse WSDl at: http://192.168.1.3:7001/PC3-WS/MetadataService?WSDL 
    at weblogic.testclient.ConnectionState.createWsdl(ConnectionState.java:69) 
    at Controller.refreshWsdl(Controller.java:641) 
    at Controller.begin(Controller.java:451) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.beehive.netui.pageflow.FlowController.invokeActionMethod(FlowController.java:879) 
    at org.apache.beehive.netui.pageflow.FlowController.getActionMethodForward(FlowController.java:809) 
    at org.apache.beehive.netui.pageflow.FlowController.internalExecute(FlowController.java:478) 
    at org.apache.beehive.netui.pageflow.PageFlowController.internalExecute(PageFlowController.java:306) 
    at org.apache.beehive.netui.pageflow.FlowController.execute(FlowController.java:336) 
    at org.apache.beehive.netui.pageflow.internal.FlowControllerAction.execute(FlowControllerAction.java:52) 
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431) 
    at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.access$201(PageFlowRequestProcessor.java:97) 
    at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor$ActionRunner.execute(PageFlowRequestProcessor.java:2044) 
    at org.apache.beehive.netui.pageflow.interceptor.action.internal.ActionInterceptors.wrapAction(ActionInterceptors.java:91) 
    at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.processActionPerform(PageFlowRequestProcessor.java:2116) 
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236) 
    at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.processInternal(PageFlowRequestProcessor.java:556) 
    at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.process(PageFlowRequestProcessor.java:853) 
    at org.apache.beehive.netui.pageflow.AutoRegisterActionServlet.process(AutoRegisterActionServlet.java:631) 
    at org.apache.beehive.netui.pageflow.PageFlowActionServlet.process(PageFlowActionServlet.java:158) 
    at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) 
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) 
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300) 
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:183) 
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.doIt(WebAppServletContext.java:3683) 
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3650) 
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) 
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121) 
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2268) 
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2174) 
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1446) 
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201) 
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:173) 
Caused by: weblogic.testclient.WsdlParseFailedException: Unable to parse WSDl at: http://192.168.1.3:7001/PC3-WS/MetadataService?WSDL 
    at weblogic.testclient.ConnectionState.createWsdlFromHttpUrl(ConnectionState.java:199) 
    at weblogic. 

testclient.ConnectionState.createWsdl (ConnectionState.java:60) ... 38 plus

Répondre

1

C'est le moyen de sécuriser un service Web avec l'authentification HTTP de base, dans WLES 10.3.3.

Dans WLES Admin Console aller à domaine de sécurité -> MYREALM et créer:

Nouvel utilisateur: user/12345678 Nouveau groupe: basicGroup Ajouter l'utilisateur au groupe

En web.xml ajouter les paramètres de sécurité (chemin, type de base):

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    id="PC3-WS" version="2.5"> 
    <display-name>PC3-WS</display-name> 
    <session-config> 
     <session-timeout>30</session-timeout> 
    </session-config> 
    <security-constraint> 
     <display-name>SecurityConstraint</display-name> 
     <web-resource-collection> 
      <web-resource-name>PC3-WS</web-resource-name> 
      <url-pattern>/PC3-WS</url-pattern> 
     </web-resource-collection> 
     <auth-constraint> 
      <role-name>basicGroup</role-name> 
     </auth-constraint> 
     <user-data-constraint> 
      <transport-guarantee>NONE</transport-guarantee> 
     </user-data-constraint> 
    </security-constraint> 
    <security-role> 
     <role-name>Authenticated</role-name> 
    </security-role> 

    <login-config> 
     <auth-method>BASIC</auth-method> 
     <realm-name>myrealm</realm-name> 
    </login-config> 
</web-app> 

Dans weblogic.xml carte le rôle de l'application avec le rôle de serveur (il est obligatoire):

<?xml version="1.0" encoding="UTF-8"?> 
<wls:weblogic-web-app 
    xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.1/weblogic-web-app.xsd"> 
    <wls:weblogic-version>10.3.3</wls:weblogic-version> 
    <wls:context-root>PC3-WS</wls:context-root> 
    <wls:security-role-assignment> 
     <wls:role-name>Authenticated</wls:role-name> 
     <wls:principal-name>users</wls:principal-name> 
    </wls:security-role-assignment> 
</wls:weblogic-web-app> 

Construire et déployer l'application. Redémarrez WLES. Vous pouvez tester avec SoapUI, en passant userId et mot de passe dans la section inférieure "Paramètres d'authentification et de sécurité" Allez dans Fichier -> Préférences et dans "Paramètres HTTP" cochez "Authentifier Préemptif" Maintenant, vous pouvez exécuter vos services Web de soapUI.

1
  1. Pouvez-vous fournir les web.xml complets & fichiers weblogic.xml?
  2. Pourquoi devez-vous configurer IdentityAssertionAuthenticator si vous ne faites que l'authentification BASIC?
  3. Aussi pouvez-vous fournir qu'as de authentificateur vous dans le résumé des serveurs> MYREALM> Fournisseurs (de console)

Enfin, vous pouvez activer le debugs de suivre si l'authentification est se trigged

Sur la console naviguez jusqu'à

Sommaire des serveurs>% votre_serveur%> Debug

développer weblogic> sécurité et permettre

  • DebugSecurity
  • atn> DebugSecurityAtn

Il suffit de vous assurer que vous avez les journaux en mode debug. Testez l'application et consultez le journal du serveur, il devrait fournir des détails sur ce qui se passe.

+0

ajouté web.xml et weblogic.xml dans le corps de ma question, jetez un oeil. Appréciez grandement pour votre aide. –

Questions connexes