2013-04-30 10 views
0

У меня есть рабочий экземпляр tomcat, где апплет tomcat-manager аутентифицируется с помощью SPNEGO. Когда я раскрываю CAS - настроен на использование SPNEGO - происходит следующее:аутентификация spnego перестает работать при развертывании CAS

  • сразу после развертывания, как менеджер апплета и CAS работает, как ожидалось
  • после TOMCAT перезагрузки, ни один из них не работает, как из их кидает исключения (см ниже)
  • , если я отменить развертывание CAS, менеджер апплет по-прежнему не работает, пока кот не будет перезагружен

Я предположил, что, что приложения не должны изменять поведение других приложений, и, следовательно, используя CAS для authenti катион является добровольным. Если бы это было правдой, тогда это было бы ошибкой. Если нет, то я бы предположил, что CAS должен заменить на аутентификацию приложения, и в этом случае это все равно будет ошибкой. Однако я также предполагаю, что мне не хватает важной информации о том, как должен работать CAS/tomcat. Короче говоря: это ошибка должны быть сообщено, и/или я должен узнать больше о том, как CAS/кот должен работать

Исключение при попытке войти в менеджер апплет (и где?):

Apr 30 08:57:03 127.0.0.1/127.0.0.1 1 2013-04-30T06:57:03.222Z tomcat http-bio-8080-exec-1 21438 192.168.1.10 - - [30/Apr/2013:06:57:03 +0000] "GET /manager/ HTTP/1.1" 302 - 
Apr 30 08:57:03 127.0.0.1/127.0.0.1 1 2013-04-30T06:57:03.301Z tomcat http-bio-8080-exec-2 21438 192.168.1.10 - - [30/Apr/2013:06:57:03 +0000] "GET /manager/html?org.apache.catalina.filters.CSRF_NONCE=146B55AA6642928501CA00F62409FCE8 HTTP/1.1" 401 2486 
Apr 30 08:57:03 127.0.0.1/127.0.0.1 1 2013-04-30T06:57:03.348Z tomcat http-bio-8080-exec-3 21438 192.168.1.10 - - [30/Apr/2013:06:57:03 +0000] "GET /manager/html?org.apache.catalina.filters.CSRF_NONCE=146B55AA6642928501CA00F62409FCE8 HTTP/1.1" 500 1000 
Apr 30 08:57:04 [email protected] Apr 30, 2013 6:57:03 AM org.apache.catalina.authenticator.SpnegoAuthenticator authenticate 
Apr 30 08:57:04 [email protected] SEVERE: Unable to login as the service principal 
Apr 30 08:57:04 [email protected] javax.security.auth.login.LoginException: No LoginModules configured for com.sun.security.jgss.krb5.accept 
Apr 30 08:57:04 [email protected] at javax.security.auth.login.LoginContext.init(LoginContext.java:273) 
Apr 30 08:57:04 [email protected] at javax.security.auth.login.LoginContext.<init>(LoginContext.java:349) 
Apr 30 08:57:04 [email protected] at org.apache.catalina.authenticator.SpnegoAuthenticator.authenticate(SpnegoAuthenticator.java:195) 
Apr 30 08:57:04 [email protected] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:544) 
Apr 30 08:57:04 [email protected] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
Apr 30 08:57:04 [email protected] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
Apr 30 08:57:04 [email protected] at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 
Apr 30 08:57:04 [email protected] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
Apr 30 08:57:04 [email protected] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
Apr 30 08:57:04 [email protected] at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987) 
Apr 30 08:57:04 [email protected] at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579) 
Apr 30 08:57:04 [email protected] at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309) 
Apr 30 08:57:04 [email protected] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
Apr 30 08:57:04 [email protected] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
Apr 30 08:57:04 [email protected] at java.lang.Thread.run(Thread.java:722) 

же с CAS:

Apr 30 08:59:58 127.0.0.1/127.0.0.1 1 2013-04-30T06:59:58.104Z tomcat http-bio-8080-exec-4 21438 192.168.1.10 - - [30/Apr/2013:06:59:58 +0000] "GET /cas/ HTTP/1.1" 302 - 
Apr 30 08:59:58 127.0.0.1/127.0.0.1 1 2013-04-30T06:59:58.937Z tomcat http-bio-8080-exec-5 21438 192.168.1.10 - - [30/Apr/2013:06:59:58 +0000] "GET /cas/login HTTP/1.1" 401 954 
Apr 30 08:59:59 [email protected] 2013-04-30 06:59:58,761 INFO [org.jasig.cas.web.flow.InitialFlowSetupAction] - <Setting path for cookies to: /cas/> 
Apr 30 08:59:59 [email protected] jcifs.spnego.AuthenticationException: Error performing Kerberos authentication: java.lang.reflect.InvocationTargetException 
Apr 30 08:59:59 [email protected] at jcifs.spnego.Authentication.processKerberos(Authentication.java:447) 
Apr 30 08:59:59 [email protected] at jcifs.spnego.Authentication.processSpnego(Authentication.java:346) 
Apr 30 08:59:59 [email protected] at jcifs.spnego.Authentication.process(Authentication.java:235) 
Apr 30 08:59:59 [email protected] at org.jasig.cas.support.spnego.authentication.handler.support.JCIFSSpnegoAuthenticationHandler.doAuthentication(JCIFSSpnegoAuthenticationHandler.java:70) 
Apr 30 08:59:59 [email protected] at org.jasig.cas.authentication.handler.support.AbstractPreAndPostProcessingAuthenticationHandler.authenticate_aroundBody2(AbstractPreAndPostProcessingAuthenticationHandler.java:85) 
Apr 30 08:59:59 [email protected] at org.jasig.cas.authentication.handler.support.AbstractPreAndPostProcessingAuthenticationHandler.authenticate_aroundBody3$advice(AbstractPreAndPostProcessingAuthenticationHandler.java:57) 
Apr 30 08:59:59 [email protected] at org.jasig.cas.authentication.handler.support.AbstractPreAndPostProcessingAuthenticationHandler.authenticate(AbstractPreAndPostProcessingAuthenticationHandler.java:1) 
Apr 30 08:59:59 [email protected] at org.jasig.cas.authentication.AuthenticationManagerImpl.authenticateAndObtainPrincipal(AuthenticationManagerImpl.java:93) 
Apr 30 08:59:59 [email protected] at org.jasig.cas.authentication.AbstractAuthenticationManager.authenticate_aroundBody0(AbstractAuthenticationManager.java:57) 
Apr 30 08:59:59 [email protected] at org.jasig.cas.authentication.AbstractAuthenticationManager.authenticate_aroundBody1$advice(AbstractAuthenticationManager.java:57) 
Apr 30 08:59:59 [email protected] at org.jasig.cas.authentication.AbstractAuthenticationManager.authenticate(AbstractAuthenticationManager.java:1) 
Apr 30 08:59:59 [email protected] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 

[... 149 more] 

Apr 30 08:59:59 [email protected] Caused by: java.lang.reflect.InvocationTargetException 
Apr 30 08:59:59 [email protected] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
Apr 30 08:59:59 [email protected] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
Apr 30 08:59:59 [email protected] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
Apr 30 08:59:59 [email protected] at java.lang.reflect.Method.invoke(Method.java:601) 
Apr 30 08:59:59 [email protected] at jcifs.spnego.Authentication$ServerAction.run(Authentication.java:511) 
Apr 30 08:59:59 [email protected] at jcifs.spnego.Authentication.processKerberos(Authentication.java:430) 
Apr 30 08:59:59 [email protected] ... 160 more 
Apr 30 08:59:59 [email protected] Caused by: GSSException: No valid credentials provided (Mechanism level: Attempt to obtain new ACCEPT credentials failed!) 
Apr 30 08:59:59 [email protected] at sun.security.jgss.krb5.Krb5AcceptCredential.getInstance(Krb5AcceptCredential.java:81) 
Apr 30 08:59:59 [email protected] at sun.security.jgss.krb5.Krb5MechFactory.getCredentialElement(Krb5MechFactory.java:126) 
Apr 30 08:59:59 [email protected] at sun.security.jgss.GSSManagerImpl.getCredentialElement(GSSManagerImpl.java:192) 
Apr 30 08:59:59 [email protected] at sun.security.jgss.GSSCredentialImpl.add(GSSCredentialImpl.java:406) 
Apr 30 08:59:59 [email protected] at sun.security.jgss.GSSCredentialImpl.<init>(GSSCredentialImpl.java:60) 
Apr 30 08:59:59 [email protected] at sun.security.jgss.GSSManagerImpl.createCredential(GSSManagerImpl.java:153) 
Apr 30 08:59:59 [email protected] ... 166 more 
Apr 30 08:59:59 [email protected] Caused by: javax.security.auth.login.LoginException: Unable to obtain Princpal Name for authentication 
Apr 30 08:59:59 [email protected] at com.sun.security.auth.module.Krb5LoginModule.promptForName(Krb5LoginModule.java:796) 
Apr 30 08:59:59 [email protected] at com.sun.security.auth.module.Krb5LoginModule.attemptAuthentication(Krb5LoginModule.java:667) 
Apr 30 08:59:59 [email protected] at com.sun.security.auth.module.Krb5LoginModule.login(Krb5LoginModule.java:580) 
Apr 30 08:59:59 [email protected] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
Apr 30 08:59:59 [email protected] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
Apr 30 08:59:59 [email protected] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
Apr 30 08:59:59 [email protected] at java.lang.reflect.Method.invoke(Method.java:601) 
Apr 30 08:59:59 [email protected] at javax.security.auth.login.LoginContext.invoke(LoginContext.java:784) 
Apr 30 08:59:59 [email protected] at javax.security.auth.login.LoginContext.access$000(LoginContext.java:203) 
Apr 30 08:59:59 [email protected] at javax.security.auth.login.LoginContext$5.run(LoginContext.java:721) 
Apr 30 08:59:59 [email protected] at javax.security.auth.login.LoginContext$5.run(LoginContext.java:719) 
Apr 30 08:59:59 [email protected] at java.security.AccessController.doPrivileged(Native Method) 
Apr 30 08:59:59 [email protected] at javax.security.auth.login.LoginContext.invokeCreatorPriv(LoginContext.java:718) 
Apr 30 08:59:59 [email protected] at javax.security.auth.login.LoginContext.login(LoginContext.java:590) 
Apr 30 08:59:59 [email protected] at sun.security.jgss.GSSUtil.login(GSSUtil.java:255) 
Apr 30 08:59:59 [email protected] at sun.security.jgss.krb5.Krb5Util.getServiceCreds(Krb5Util.java:334) 
Apr 30 08:59:59 [email protected] at sun.security.jgss.krb5.Krb5AcceptCredential$1.run(Krb5AcceptCredential.java:76) 
Apr 30 08:59:59 [email protected] at sun.security.jgss.krb5.Krb5AcceptCredential$1.run(Krb5AcceptCredential.java:74) 
Apr 30 08:59:59 [email protected] at java.security.AccessController.doPrivileged(Native Method) 
Apr 30 08:59:59 [email protected] at sun.security.jgss.krb5.Krb5AcceptCredential.getInstance(Krb5AcceptCredential.java:73) 
Apr 30 08:59:59 [email protected] ... 171 more 
Apr 30 08:59:59 [email protected] 2013-04-30 06:59:59,163 INFO [org.jasig.cas.authentication.AuthenticationManagerImpl] - <org.jasig.cas.support.spnego.authentication.handler.support.JCIFSSpnegoAuthenticationHandler failed authenticating unknown> 
Apr 30 08:59:59 [email protected] 2013-04-30 06:59:59,171 INFO [com.github.inspektr.audit.support.Slf4jLoggingAuditTrailManager] - <Audit trail record BEGIN 
Apr 30 08:59:59 [email protected] ============================================================= 
Apr 30 08:59:59 [email protected] WHO: unknown 
Apr 30 08:59:59 [email protected] WHAT: supplied credentials: unknown 
Apr 30 08:59:59 [email protected] ACTION: AUTHENTICATION_FAILED 
Apr 30 08:59:59 [email protected] APPLICATION: CAS 
Apr 30 08:59:59 [email protected] WHEN: Tue Apr 30 06:59:59 GMT 2013 
Apr 30 08:59:59 [email protected] CLIENT IP ADDRESS: 192.168.1.10 
Apr 30 08:59:59 [email protected] SERVER IP ADDRESS: 192.168.1.29 
Apr 30 08:59:59 [email protected] ============================================================= 
Apr 30 08:59:59 [email protected] > 
Apr 30 08:59:59 [email protected] 2013-04-30 06:59:59,174 INFO [com.github.inspektr.audit.support.Slf4jLoggingAuditTrailManager] - <Audit trail record BEGIN 
Apr 30 08:59:59 [email protected] ============================================================= 
Apr 30 08:59:59 [email protected] WHO: unknown 
Apr 30 08:59:59 [email protected] WHAT: :jcifs.spnego.AuthenticationException: Error performing Kerberos authentication: java.lang.reflect.InvocationTargetException 
Apr 30 08:59:59 [email protected] ACTION: TICKET_GRANTING_TICKET_NOT_CREATED 
Apr 30 08:59:59 [email protected] APPLICATION: CAS 
Apr 30 08:59:59 [email protected] WHEN: Tue Apr 30 06:59:59 GMT 2013 
Apr 30 08:59:59 [email protected] CLIENT IP ADDRESS: 192.168.1.10 
Apr 30 08:59:59 [email protected] SERVER IP ADDRESS: 192.168.1.29 
Apr 30 08:59:59 [email protected] ============================================================= 
Apr 30 08:59:59 [email protected] > 

ответ

0

кажется, что ваш jaas.conf неправильно написано. Исключение

javax.security.auth.login.LoginException: No LoginModules configured for com.sun.security.jgss.krb5.accept 

В основном это означает, что у вас отсутствует запись в вашем jaas.conf. Внутри/папки конф TOMCAT вы должны написать/изменить jaas.conf

модуль выборки выглядит следующим образом (добавьте это к существующим jaas.conf): -

com.sun.security.jgss.krb5.accept { 
com.sun.security.auth.module.Krb5LoginModule required 
doNotPrompt=true 
principal="YOUR PRINCIPAL ASSOCIATED WITH KEYTAB" 
useKeyTab=true 
keyTab="CORRECT KEYTAB FILE" 
storeKey=true 
debug=true; 
}; 

Это конечно если у вас есть keytab для серверной части. Это также предполагает, что вы вручную указали в развертывании cas пользовательский jaas.conf (могут также иметь некоторые другие имена). В случае пользовательского развертывания добавьте эту запись в пользовательский файл jaas.conf

Я предполагаю (здесь я могу ошибаться), что cas является клиентом. В этом случае вам нужно указать модуль com.sun.security.jgss.krb5.initiate в своем стандартном jaas.conf по умолчанию (я не знаю, где его местоположение или должно быть). В том, что вы можете использовать единый вход (один знак аутентификации) с использованием: -

useTicketCache=true 

и о том, useKeyTab = ложь, которая должна звукосниматель ваш верительных по умолчанию и создать имя участника.

Если у вас есть проблемы, дать выход всех * .conf файлов в обоих TOMCAT и КАН установок

+0

Я считаю, что мой jaas.conf правильно. SPNEGO работает, если CAS не развернут. Выход «мерзавца дифф 0a9330fd0758e6a19a6491b1e191651623408a89 - tomcat7 по умолчанию/tomcat7» находится в http://paste.ubuntu.com/5626376/ Выход мерзавца дифф 3d44888d193d541d97d8410db1c5320fd8d734ab - доля/tomcat7 * находится по адресу: // пасте. убунт.com/5626378/ –

+0

Что меня беспокоит, так это то, что вы указали имя приложения в области jaas как «PortalRealm», тогда как у вас нет такой записи в любом файле jaas.conf. Я не знаю, поможет ли это решить вашу проблему, но вы можете попробовать две вещи. Сначала определите запись в tomcat jaas.conf с Portal Realm и isInitiatore = false. Во-вторых, установите параметр -Djava.security.auth.login.config = «ваш путь», чтобы быть абсолютно уверенным, что cas не устанавливает какой-либо другой файл jaas во время его запуска. –

+0

Я думаю, что нашел, в чем проблема. Я экспериментировал на своем коте и пытался воспроизвести проблему. Область JAAS вызывается только тогда, когда клиент пытается получить к ней доступ (в вашем случае это cas). Напишите запись в своем tomcat jaas.conf в следующем формате: - PortalRealm {com.sun.security.auth.module.Krb5LoginModule required ...}; и заполните его теми же параметрами, которые указаны в вашей записи приема –