10.4. 사용자 정의 HTTP 메커니즘 개발
Elytron을 사용하여 웹 애플리케이션을 보호하는 경우 elytron 하위 시스템을 사용하여 등록할 수 있는 사용자 지정 HTTP 인증 메커니즘을 구현할 수 있습니다. 그러면 배포를 수정할 필요 없이 이 메커니즘을 사용하도록 배포 내의 구성을 재정의할 수도 있습니다.
모든 사용자 지정 HTTP 메커니즘은 HttpServerAuthenticationMechanism 인터페이스를 구현하는 데 필요합니다.
일반적으로 HTTP 메커니즘의 경우 evaluateRequest 메서드는 HTTPServerRequest 오브젝트에서 전달되는 요청을 처리하는 데 호출됩니다. 메커니즘은 요청을 처리하고 요청에 있는 다음 콜백 방법 중 하나를 사용하여 결과를 나타냅니다.
-
authenticationComplete- 메커니즘이 요청을 인증했습니다. -
authenticationFailed- 인증이 시도되었지만 실패했습니다. -
Authentication
InProgress - 인증이시작되었지만 추가 왕복이 필요합니다. -
badRequest- 이 메커니즘에 대한 인증이 요청 검증에 실패했습니다. -
noAuthenticationInProgress- 메커니즘이 인증 단계를 시도하지 않았습니다.
HttpServerAuthenticationMechanism 인터페이스를 구현하는 사용자 지정 HTTP 메커니즘을 만든 후 다음 단계는 이 메커니즘의 인스턴스를 반환하는 팩토리를 생성하는 것입니다. 팩토리는 HttpAuthenticationFactory 인터페이스를 구현해야 합니다. 팩토리 구현에서 가장 중요한 단계는 요청된 메커니즘의 이름을 다시 확인하는 것입니다. 필요한 메커니즘을 생성할 수 없는 경우 팩토리에서 null을 반환하는 것이 중요합니다. 메커니즘 팩토리는 요청된 메커니즘을 생성할 수 있는지 여부를 결정하기 위해 전달된 맵의 속성을 고려할 수도 있습니다.
메커니즘 팩토리의 가용성을 알리는 데 사용할 수 있는 두 가지 다른 접근법이 있습니다.
-
첫 번째 방법은 지원하는 각 메커니즘에 대해 사용 가능한 서비스로 등록된
HttpAuthenticationFactory를 사용하여java.security.Provider를 구현하는 것입니다. -
두 번째 방법은
java.util.ServiceLoader를 사용하여 대신 팩토리를 검색하는 것입니다. 이를 위해META-INF/services아래에org.wildfly.security.http.HttpServerAuthenticationMechanismFactory라는 파일을 추가해야 합니다. 이 파일에 필요한 유일한 콘텐츠는 팩토리 구현의 정규화된 클래스 이름입니다.
그러면 사용할 준비가 된 모듈로 이 메커니즘을 애플리케이션 서버에 설치할 수 있습니다.
module add --name=org.wildfly.security.examples.custom-http --resources=/path/to/custom-http-mechanism.jar --dependencies=org.wildfly.security.elytron,javax.api
추가 리소스
- 자세한 내용은 모듈 및 종속성을 참조하십시오.
사용자 지정 HTTP 메커니즘 사용
사용자 지정 모듈을 추가합니다.
/subsystem=elytron/service-loader-http-server-mechanism-factory=custom-factory:add(module=org.wildfly.security.examples.custom-http)
http-authentication-factory를 추가하여 메커니즘 팩토리를인증에 사용할 보안도메인에 연결합니다./subsystem=elytron/http-authentication-factory=custom-mechanism:add(http-server-mechanism-factory=custom-factory,security-domain=ApplicationDomain,mechanism-configurations=[{mechanism-name=custom-mechanism}])새
http리소스를 업데이트합니다.-authentication-factory를 사용하도록 application-security-domain참고애플리케이션이 배포되면 기본적으로
other보안 도메인을 사용합니다. 따라서 애플리케이션에 매핑을 추가하여 Elytron HTTP 인증 팩토리에 매핑해야 합니다./subsystem=undertow/application-security-domain=other:add(http-authentication-factory=application-http-authentication)
이제 새
http리소스를 업데이트할 수 있습니다.-authentication-factory를 사용하도록 application-security-domain/subsystem=undertow/application-security-domain=other:write-attribute(name=http-authentication-factory,value=custom-mechanism) /subsystem=undertow/application-security-domain=other:write-attribute(name=override-deployment-config,value=true)
위의 명령은 배포 구성을 덮어씁니다. 즉, 배포가 다른 메커니즘을 사용하도록 구성된 경우에도
http-authentication-factory의 메커니즘이 사용됩니다. 따라서 배포 자체를 수정할 필요 없이 사용자 지정 메커니즘을 사용하도록 배포 내의 구성을 재정의할 수 있습니다.서버를 다시 로드합니다
reload