2011-01-06 15 views
0

Ich habe eine recht einfache Aufgabe zu erfüllen - Ich muss die Sicherheit für Web-Services einrichten (Basis-Authentifizierung mit Hardcode in WLES Benutzer-ID und Passwort). Ich habe die web.xml eingestellt (siehe Code-Fragment unten), aber ich habe Schwierigkeiten, WebLogic zu konfigurieren. Ich habe IdentityAssertionAuthenticator Authentication Provider hinzugefügt, als Required festgelegt, defaultAuthenticator als Optional modifiziert und bin zur Sicherheit der implementierten Anwendung gegangen und habe die Rolle auf "thisIsUser" gesetzt. Irgendwann hat es funktioniert, aber nicht mehr (Ich habe die WAR-Datei neu implementiert und die Sicherheit des Webdienstes eingestellt auf die gleiche Weise, aber ohne Erfolg.) Ich würde mich sehr für Ihre Hilfe bedanken. web.xmlSo richten Sie WebLogic 10.3.3 ein. Sicherheit für JAX_WS-Webdienste?

<?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> 

Die Liste der authenticators:

  • DefaultAuthenticator
  • DefaultIdentityAssert

Now I ha Ausnahme ve:

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 weitere

Antwort

1

So sichern Sie einen Web-Service mit einfacher HTTP-Authentifizierung in WLES 10.3.3.

In WLES Admin-Konsole Sicherheitsbereich gehen -> meine und erstellen:

Neuen Benutzer: Benutzer/12345678 Neue Gruppe: basicGroup die Benutzer zur Gruppe hinzufügen

In web.xml fügen Sie die Sicherheitseinstellungen (Pfad, Basistyp):

<?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> 

In weblogic.xml die Anwendungsrolle mit Serverrolle zuordnen (es ist obligatorisch):

<?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> 

Erstellen und Bereitstellen von Anwendung. WLES neu starten. Sie können mit SoapUI testen, BenutzerID und Passwort im unteren Abschnitt namens "Authentifizierung und sicherheitsrelevante Einstellungen" Gehen Sie zu Datei -> Einstellungen und in "HTTP-Einstellungen" überprüfen Sie "Authenticate Preemptively" Jetzt können Sie Ihre Web-Services ausführen von SeifeUI.

1
  1. Können Sie die komplette web.xml & weblogic.xml Dateien zur Verfügung stellen?
  2. Warum müssen Sie IdentityAssertionAuthenticator konfigurieren, wenn Sie nur BASIC-Authentifizierung durchführen?
  3. Sie können auch zur Verfügung stellen, welche die Authenticator Sie in der Zusammenfassung der Server haben> mein> Anbieter (von der Konsole)

Schließlich können Sie die Debuggt ermöglichen zu verfolgen, wenn die Authentifizierung trigged bekommen wird

Auf der Konsole navigieren zu

Zusammenfassung Servers>% Ihr_Server%> Debug

erweitern weblogic> Sicherheit und ermöglichen

  • DebugSecurity
  • atn> DebugSecurityAtn

nur sicherstellen, dass Sie die Protokolle im Debug-Modus haben. Testen Sie die App und schauen Sie sich das Serverprotokoll an. Es sollte Details zu den Vorgängen enthalten.

+0

hinzugefügt web.xml und weblogic.xml im Körper meiner Frage, werfen Sie einen Blick. Vielen Dank für Ihre Hilfe. –

Verwandte Themen