class ZosmfService extends AbstractZosmfService {

    public AuthenticationResponse authenticate(Authentication authentication) {
        AuthenticationResponse authenticationResponse;
        if (authenticationEndpointExists(HttpMethod.POST)) {
            authenticationResponse = issueAuthenticationRequest(
                authentication,
                getURI(getZosmfServiceId()) + ZOSMF_AUTHENTICATE_END_POINT,
                HttpMethod.POST);
        } else {
            String zosmfInfoURIEndpoint = getURI(getZosmfServiceId()) + ZOSMF_INFO_END_POINT;
            authenticationResponse = issueAuthenticationRequest(
                authentication,
                zosmfInfoURIEndpoint,
                HttpMethod.GET);
            authenticationResponse.setDomain(getZosmfRealm(zosmfInfoURIEndpoint));
        }
        return authenticationResponse;
    }

    public  ZosmfService(
        final AuthConfigurationProperties authConfigurationProperties,
        final DiscoveryClient discovery,
        final @Qualifier("restTemplateWithoutKeystore") RestTemplate restTemplateWithoutKeystore,
        final ObjectMapper securityObjectMapper
    );

}