2013-04-30 4 views
0

tomcat-manager 애플릿이 SPNEGO로 인증되는 작동중인 tomcat 인스턴스가 있습니다. 내가 CAS를 배포 할 때 이 - SPNEGO를 사용하도록 구성 - 다음이 발생합니다CAS 배포시 spnego 인증이 작동하지 않습니다.

  • 바로 배포 후, 관리자 애플릿 및 CAS 모두 바람둥이 다시 시작한 후
  • , 그들 중 누구도 작동하지 않습니다, 모두 예상대로 작동 그들에게 내가 CAS를 배포 해제하는 경우 예외 바람둥이는

를 다시 시작할 때까지 관리자 애플릿이 아직도 내가 응용 프로그램은 CAS를 사용하므로 다른 응용 프로그램의 동작을 수정하고 안된다는 것을 가정 하였다 작동하지 않습니다

  • (아래 참조) 발생 인증을 위해 양이온은 자발적이다. 이것이 사실이라면,이 행동은 오류 일 것입니다. 그렇지 않다면, 나는 CAS가 을 응용 프로그램의 인증으로 대체해야한다고 가정합니다.이 경우 여전히 오류가 발생합니다. 그러나 CAS/바람둥이가 어떻게 작동해야하는지에 대한 중요한 정보를 놓친다 고 가정합니다. 한마디로 : 그것은 오류가보고 될 및/또는 I는 CAS/Tomcat이 작동하는 방법에 대한 자세한 내용해야

    예외 관리자 애플릿에 로그인 할 때 (어디서?) :

    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 s_catal[email protected] > 
    
  • 답변

    0

    당신의 jaas.conf를 잘못 쓴 것 같다. 예외는

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

    입니다. 기본적으로 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; 
    }; 
    

    이 당연히 당신이 가정 한 것입니다 : - 당신이 작성해야 바람둥이/conf 폴더 내부/

    샘플 모듈 (기존 jaas.conf를이를 추가) 다음과 같이있는 jaas.conf를 수정 서버 측의 키 탭. 이것은 또한 cas 배포에서 사용자 정의 jaas.conf (다른 이름도 가질 수 있음)를 수동으로 지정하지 않았다고 가정합니다. 사용자 정의 배포의 경우이 항목을 사용자 정의 jaas.conf에 추가하십시오.

    여기 cas이 클라이언트라고 가정합니다. 이 경우 기본 jaas.conf에 com.sun.security.jgss.krb5.initiate 모듈을 지정해야합니다 (그 위치 또는 위치를 알 수 없습니다). 어떤 픽업 기본 자격 증명을해야한다,

    useTicketCache=true 
    

    및 useKeyTab = 거짓 진술과 사용자 이름을 생성 - : 그 당신은 사용하여 SSO (싱글 사인온 인증)를 사용할 수 있습니다. 여전히 문제가있는 경우

    , 나는 내 jaas.conf를가 정확 모두 바람둥이와 캐스 설치

    +0

    에서 모든 *의 .conf 파일의 출력을 제공합니다. CAS가 배포되지 않은 경우 SPNEGO가 작동합니다. 'git diff 0a9330fd0758e6a19a6491b1e191651623408a89 - tomcat7 default/tomcat7'의 출력은 http://paste.ubuntu.com/5626376/ 입니다. git diff 3d44888d193d541d97d8410db1c5320fd8d734ab - share/tomcat7 *의 출력은 http : // paste입니다. 우분투.com/5626378/ –

    +0

    나를 괴롭히는 것은 "PortalRealm"으로 jaas 영역에 appname을 지정했다는 것입니다. 반면에 jaas.conf에는 해당 항목이 없습니다. 나는 이것이 당신의 문제를 해결할 지 모른다. 그러나 당신은 두 가지를 시도 할 수있다. 먼저 Portal Realm 및 isInitiatore = false로 tomcat jaas.conf에 항목을 정의하십시오. 두 번째로 -Djava.security.auth.login.config = "your path"옵션을 설정합니다. cas가 시동 중에 다른 jaas 파일을 설정하지 않았 음을 확인하십시오. –

    +0

    문제점이 무엇인지 알았습니다. 나는 바람둥이를 실험 중이었고 문제를 재현하려고 시도했다. JAAS 영역은 클라이언트가 액세스하려고 할 때만 호출됩니다 (사용자의 경우 CAS 임). tomcat jaas.conf에 다음 형식으로 항목을 작성하십시오. - PortalRealm {com.sun.security.auth.module.Krb5LoginModule required ...}; 동의 항목에 지정한 것과 동일한 옵션으로 입력하십시오. –