2014-09-04 9 views
2

나는 특정 쿠키를 읽고 그 쿠키에 저장된 사용자 기반 인증 토큰을 인증하는 자체 인증자를 작성하려고합니다. 당신이 할 수Jboss 7 자신의 인증 자

공용 클래스 SampleAuthenticator이 AuthenticatorBase가 {

@Override 
protected boolean authenticate(Request arg0, Response arg1, LoginConfig arg2) throws IOException { 
    System.out.println("===CHECK==="); 
    return false; 
} 

를 확장 : 내 자신의 인증을 작성하는

그래서 나는 시작 org.jboss.security.negotiation.NegotiationAuthenticator

: 예를 들어 나는이 수업을했다 내 클래스가 기본값으로 구현되어야하는 필요한 메서드 만 포함되어 있습니다.

이 인증 프로그램을 Jboss "modules"디렉토리에 모듈로 설치했습니다.

은 그 때 나는 standalone.xml 새로운 보안 도메인을 추가 한 :

<security-domain name="sso" cache-type="default"> 
       <authentication> 
        <login-module code="UsersRoles" flag="required" /> 
       </authentication> 
</security-domain> 

내가뿐만 아니라 standalone.xml 글로벌로 내 모듈을 만들었습니다 (JBoss의 도메인 서브 시스템) :

<global-modules> 
      <module name="com.myexample.authenticator"/> 
</global-modules> 

이제 내 인증 프로그램을 사용할 준비가되었습니다 (출력 단어 "=== CHECK ===")

예제 웹 응용 프로그램에 jboss-web.xml 설명자를 추가했습니다 :

<jboss-web> 
    <security-domain>sso</security-domain> 
    <valve> 
     <class-name>com.myexample.authenticator.SampleAuthenticator</class-name> 
    </valve> 
</jboss-web> 

내 web.xml 서술자는 다음입니다 :

<security-constraint> 
    <web-resource-collection> 
     <web-resource-name>MyResourceName</web-resource-name> 
     <url-pattern>/*</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>user</role-name> 
    </auth-constraint> 
</security-constraint> 
<login-config> 
    <auth-method>FORM</auth-method> 
    <realm-name>My kinda secure web application</realm-name> 
</login-config> 
<security-role> 
    <role-name>user</role-name> 
</security-role> 

를 내가이 예외를 던지고 내 웹 응용 프로그램 배포하려고 마지막 때

12:41:28,554 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-2) MSC000001: Failed to start service jboss.web.valve.myvalve: org.jboss.msc.service.StartException in service jboss.web.valve.myvalve: java.lang.ClassCastException: com.myexample.authenticator.SampleAuthenticator cannot be cast to org.apache.catalina.Valve 
     at org.jboss.as.web.WebValveService.start(WebValveService.java:92) 
     at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.4.GA-redhat-1.jar:1.0.4.GA-redhat-1] 
     at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.4.GA-redhat-1.jar:1.0.4.GA-redhat-1] 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_55] 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_55] 
     at java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_55] 
Caused by: java.lang.ClassCastException: com.myexample.authenticator.SampleAuthenticator cannot be cast to org.apache.catalina.Valve 
     at org.jboss.as.web.WebValveService.start(WebValveService.java:72) 
     ... 5 more 

나는이에 붙어를 포인트. 일부 인증자를 다시 구현하려고 시도했지만이 ClassCastException은 항상 존재합니다.

누구든지 나만의 인증 작성을 도와 줄 수 있습니까? Jboss 7.1.1에서 Jboss EAP 6.2를 사용 중입니다.

답변

0

문제는 내가 잘못 lib 디렉토리를 사용하고 있었다이었다에서이 클래스가 없어야합니다. 문제는이 종속성을 사용하여 해결되었습니다.

<dependency> 
      <groupId>org.jboss.as</groupId> 
      <artifactId>jboss-as-web</artifactId> 
      <version>7.2.0.Final</version> 
      <scope>provided</scope> 
     </dependency> 
0

클래스 경로를 확인했지만 클래스를 반복적으로 배포했습니다. 당신이 이미 autenticator와는 JBoss 모듈에서 정의한 경우

는 전쟁이나 귀