Authorisation issue while accessing a page from repository in CQ5.

廉价感情. 提交于 2020-01-25 20:57:17

问题


I'm trying to hit a page which contains a xml structure. for that i'm using this code

            @Reference
            private SlingRepository repository;

            adminSession = repository.loginAdministrative( repository.getDefaultWorkspace());
            String pageUrl = "http://localhost:4504"+page+".abc.htm";
            conn = (HttpURLConnection)new URL(pageUrl).openConnection();
            conn.setRequestProperty("Accept-Charset", charset);
            conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.3) Gecko/20100401"); // Do as if you'rusing Firefox 3.6.3
            urlResponse = new BufferedInputStream(conn.getInputStream());
            BufferedReader reader = new BufferedReader( new InputStreamReader(urlResponse) );

While accesing the page i'm getting this issue

org.apache.sling.auth.core.impl.SlingAuthenticator getAnonymousResolver: `Anonymous access not allowed by configuration - requesting credentials`

I'm logged in as an admin and whenever i'm directly hitting this urlfrom browser it is working properly bt while accessing it thriugh my code i'm getting this error.

any suggestion ?


回答1:


If you are trying to call an url on an author instance, the following method I use in one of my projects might help (using apache commons HttpClient):

private InputStream getContent(final String url)
    HttpClient httpClient = new HttpClient();
    httpClient.getParams().setAuthenticationPreemptive(true);
    httpClient.getState().setCredentials(new AuthScope(null, -1, null),
        new UsernamePasswordCredentials("admin", "admin"));
    try {
        GetMethod get = new GetMethod(url);
        httpClient.executeMethod(get);
        if (get.getStatusCode() == HttpStatus.SC_OK) {
            return get.getResponseBodyAsStream();
        } else {
            LOGGER.error("HTTP Error: ", get.getStatusCode());
        }
    } catch (HttpException e) {
        LOGGER.error("HttpException: ", e);
    } catch (IOException e) {
        LOGGER.error("IOException: ", e);
    }
}

Though at it is using admin:admin it only works on a local dev instance, if you are on a productive environment, I wouldn't put the admin password in plaintext, even though it is onyl code...




回答2:


You are mixing up sling credentials & http credentials. While you are logged in at the sling-repository the http session is not aware of any authentication informations!



来源:https://stackoverflow.com/questions/30587983/authorisation-issue-while-accessing-a-page-from-repository-in-cq5

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!