class OAuthCertBoundJwtAccessTokenAuthority implements Authority, AuthorityKeyStore, KeyStore {

    private void processAuthorizedClientIds(String authorizedClientIdsPath, Map<String, Set<String>> authorizedClientIds, Map<String, String> authorizedServices) {
        if (authorizedClientIdsPath == null || authorizedClientIdsPath.isEmpty()) {
            return;
        }

        try (BufferedReader br = new BufferedReader(new FileReader(authorizedClientIdsPath))) {
            for (String line = br.readLine(); line != null; line = br.readLine()) {
                if (line.isEmpty()) {
                    continue;
                }

                final String mapEntry = line.trim();
                boolean isInvalid = false;
                String[] comps = mapEntry.split(OAuthAuthorityConsts.CLIENT_ID_FIELD_DELIMITER);
                if (comps.length != 3) {
                    LOG.error("Skipping invalid client id entry {}", mapEntry);
                    isInvalid = true;
                }
                for (String comp: comps) {
                    if (comp.isEmpty()) {
                        LOG.error("Skipping invalid client id entry {}", mapEntry);
                        isInvalid = true;
                        break;
                    }
                }
                if (isInvalid) {
                    continue;
                }

                Set<String> clientIds = OAuthAuthorityUtils.csvToSet(comps[0], OAuthAuthorityConsts.CLIENT_ID_DELIMITER);
                if (clientIds == null || clientIds.contains("")) {
                    LOG.error("Skipping invalid client id entry {}", mapEntry);
                    continue;
                }
                authorizedClientIds.put(comps[1], clientIds);
                authorizedServices.put(comps[1], comps[2]);
            }
        } catch (Exception e) {
            LOG.error("Unable to process client id list: {}", e.getMessage());
        }
    }

}