우리는 애플리케이션에 "로그인 기능"기능을 통합하려고하고 있으며이를 위해 javascript (hello.js)를 사용하고 있습니다.OAuth 1.0, 자바 스크립트 및 서버 대 서버 인증
트위터는 oauth 1.0을 사용하고 있으므로 자바 스크립트 솔루션 만 사용할 수는 없지만 요청에 서명하려면 서버 간 통신을 구현해야합니다. hello.js 작성자는 node.js를 기반으로 한 데모 용도로 auth-server 구현을 제공했습니다.
백엔드 부분에 대한 우리의 응용 프로그램에서 우리는 자바를 사용하고 있으며 자바 솔루션이 이러한 목적으로 존재하는지 궁금합니다. 예를 들어 signpost 또는 유사 작업을 수행하여 auth-server의 작업을 수행 할 수 있습니까?
[업데이트] hello.js가 광역 서블릿에 사용하는 프록시를 설정하려고했습니다. (이제 herokuap 대신 buildpath에서 oauth와 함께 localhost 서블릿을 사용하고 있습니다.)
OAuthConsumer consumer = new DefaultOAuthConsumer(
"xxxx",
"yyyyyyyyyyy");
OAuthProvider provider = new DefaultOAuthProvider(
"https://api.twitter.com/oauth/request_token",
"https://api.twitter.com/oauth/access_token",
"https://api.twitter.com/oauth/authorize");
System.out.println("Fetching request token from Twitter...");
// we do not support callbacks, thus pass OOB
String authUrl = provider.retrieveRequestToken(consumer, "http://localhost:8080/oauth1/twitter/response_server");
URL url = new URL(authUrl);
HttpURLConnection req = (HttpURLConnection) url.openConnection();
req.setRequestMethod("GET");
req.connect();
BufferedReader rd = new BufferedReader(new InputStreamReader(req.getInputStream()));
StringBuilder d = new StringBuilder();
String line = null;
while ((line = rd.readLine()) != null){
d.append(line + '\n');
}
System.out.println(d);
PrintWriter out = response.getWriter();
out.println(d);
과는 hello.js 팝업에서 트위터 로그인 페이지를 인쇄합니다
이 서블릿은 다음을 수행합니다. 이 방법으로 나는 약간의 인코딩 에러를 얻었지만 꽤 효과적이다.
어쨌든 콜백 URL은 단순히 요청을 "서명"할 위치 또 다른 서블릿에 매핑하지만 난 가끔 오류 을 얻었 기 때문에 내가 뭔가를 놓친 거지 생각 "서버 요청을 이해하지만 여전히 그것을 거부" 을 하지만 모든 브라우저 창을 닫으면 작동합니다. 응답 서블릿이 하나 OAuthConsumer consumer = new AbstractOAuthConsumer(
"xxxxx",
"yyyyyyyyyyy"){
@Override
protected HttpRequest wrap(Object arg0) {
return (HttpRequest)arg0;
}
};
consumer.sign(request);
과 유사하지만 나는 바람둥이의 요청에 서명하는 방법을 모르기 때문에이 코드가 작동하지 않습니다 그러나
. oauth 홈페이지에서 부두 및 아파치 공통 HTTP 요청에 서명하는 방법에 대해 설명하지만 바람둥이에 대해서는 설명하지 않습니다. 그러나, 그것은 나의 접근 방식을 수정합니까?
안녕하세요 @ egeuato Java 구현을 실행할 수 있는지 알고 싶습니다. – Drew
아니요, 다른 작업으로 전환했습니다. – egesuato