나는 특정 쿠키를 읽고 그 쿠키에 저장된 사용자 기반 인증 토큰을 인증하는 자체 인증자를 작성하려고합니다. 당신이 할 수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를 사용 중입니다.