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 메커니즘 사용

  1. 사용자 지정 모듈을 추가합니다.

    /subsystem=elytron/service-loader-http-server-mechanism-factory=custom-factory:add(module=org.wildfly.security.examples.custom-http)
  2. 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}])
  3. 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 의 메커니즘이 사용됩니다. 따라서 배포 자체를 수정할 필요 없이 사용자 지정 메커니즘을 사용하도록 배포 내의 구성을 재정의할 수 있습니다.

  4. 서버를 다시 로드합니다

    reload