Клиент Weblogic получает исключение 401 Несанкционированный Kerberos, но мой основной класс нет. Знаете почему? - PullRequest
0 голосов
/ 28 мая 2018

У меня есть приложение, работающее как класс запуска weblogic.Когда доходит до того, что он должен запросить услугу из моего приложения, которое настроено с помощью Kerberos Service Principal, я получаю исключение 401 Unauthorized (как показано ниже).

Когда я запускаю приложение с помощью обычного метода private static void main, используя точно такие же аргументы JVM и файлы конфигурации (перечислены ниже), это работает.

Я использовал Wireshark, чтобы увидеть, что происходити я вижу, что он пытается использовать сервис только один раз, а не дважды, что означает, что Weblogic не знает, как договориться об аутентификации.Кажется, что Weblogic полностью игнорирует мои аргументы JVM, так как нет никаких признаков использования Kerberos в Weblogic даже при добавлении debug=true к аргументам jvm и файлам конфигурации.Я также установил уровень ведения журнала для отладки и включил atn и atz в мониторинге. Нет никаких следов использования Kerberos

Вот мои аргументы (я проверял одиночные и двойные слэши в моем пути, а также добавлял qoutesа не)

set JAVA_OPTIONS_KRB5_CREDS="-Djavax.security.auth.useSubjectCredsOnly=false"
set JAVA_OPTIONS_KRB5_CONF="-Djava.security.auth.login.config=C:\Mywork\wl12213\user_projects\domains\KSS\config\login.conf"
set JAVA_OPTIONS_KRB5_INI="-Djava.security.krb5.conf=C:\Mywork\wl12213\user_projects\domains\KSS\config\krb5.conf"
set JAVA_OPTIONS_KRB5_DEBUG="-Dsun.security.krb5.debug=true"

set JAVA_OPTIONS=%JAVA_OPTIONS% %JAVA_OPTIONS_KRB5_CREDS% %JAVA_OPTIONS_KRB5_CONF% %JAVA_OPTIONS_KRB5_INI% %JAVA_OPTIONS_KRB5_DEBUG%

Вот мой основной класс

  URL url = new URL("url to service (Using the url the SPN is registered to)");
            QName qname = new QName("schema");

            Service service = Service.create(url, qname);
            keystoreService = service.getPort(new QName("schema", "KeystoreServiceSoap11"), KeystoreService.class);
    GetKeystoreRequest request = new GetKeystoreRequest();
    request.setKeystoreType(StoreType.IDENTITY_STORE);
    request.setMachineName(machineName);
    GetKeystoreResponse response = keystoreService.getKeystore(request);

Файл login.conf

com.sun.security.jgss.krb5.initiate {
     com.sun.security.auth.module.Krb5LoginModule required principal="KHULE" useKeyTab="true" keyTab="C:\\Mywork\\wl12213\\user_projects\\domains\\KSS\\config\\weblogic.keytab" storeKey="true" debug=true;
};

Исключение

Caused by: com.sun.xml.ws.client.ClientTransportException: The server sent HTTP status code 401: Unauthorized
at com.sun.xml.ws.transport.http.client.HttpTransportPipe.checkStatusCode(HttpTransportPipe.java:332)
at com.sun.xml.ws.transport.http.client.HttpTransportPipe.createResponsePacket(HttpTransportPipe.java:274)
at com.sun.xml.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:232)
at weblogic.wsee.jaxws.transport.http.client.WLSHttpTransportPipe.process(WLSHttpTransportPipe.java:30)
at com.sun.xml.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:145)
at com.sun.xml.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:110)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:1136)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:1050)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:1019)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:877)
at com.sun.xml.ws.client.Stub.process(Stub.java:463)
at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:191)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:108)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:92)
at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:161)
at com.sun.proxy.$Proxy147.getKeystore(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at weblogic.wsee.jaxws.spi.ClientInstanceInvocationHandler.invoke(ClientInstanceInvocationHandler.java:147)
at com.sun.proxy.$Proxy148.getKeystore(Unknown Source)
at za.co.discovery.security.camanager.clients.weblogic.KeyStoreFactory.getIdentityStore(KeyStoreFactory.java:66)

Можете ли вы помочь мне?

...