2014-04-13 3 views
1

우리는 애플리케이션에 "로그인 기능"기능을 통합하려고하고 있으며이를 위해 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 요청에 서명하는 방법에 대해 설명하지만 바람둥이에 대해서는 설명하지 않습니다. 그러나, 그것은 나의 접근 방식을 수정합니까?

+0

안녕하세요 @ egeuato Java 구현을 실행할 수 있는지 알고 싶습니다. – Drew

+0

아니요, 다른 작업으로 전환했습니다. – egesuato

답변

0

나의 // 인증 서버와 HelloJS가 제공하는 node-oauth-shim의 사양을 확인하십시오.