2014-11-26 2 views
1

서버 측에서 Java Rest API (저지 및 JAX-RS)를 실행하고 클라이언트 측에서 기본 JS + 각도를 실행하는 웹 응용 프로그램이 있습니다. 아래 그림과 같이 사용자는 우리가 우리가 필요로하는 사용자 정보를 가지고,이 후클라이언트 측 인증, Java Rest API 보호 방법

this.handleClientLoad = function() { 
     gapi.client.setApiKey(apiKey); 
     gapi.auth.init(function() { }); 
     this.checkAuth(); 
     deferred = $q.defer(); 
     return deferred.promise; 
    }; 

    this.checkAuth = function() { 
     gapi.auth.authorize({ 
      client_id: clientId, 
      scope: scopes, 
      immediate: true, 
      cookie_policy: cookies, 
      hd: domain 
     }, this.handleAuthResult); 

    }; 


    this.handleAuthResult = function(authResult) { 
     if (authResult && !authResult.error) { 
      var data = {}; 
      gapi.client.load('oauth2', 'v2', function() { 
       var request = gapi.client.oauth2.userinfo.get(); 
       request.execute(function (resp) { 
        user.email = resp.email; 
        user.uid = resp.id; 
        user.name = resp.name; 
        this.loggedIn = true;    
        //deferred.resolve(data); 
        user.getUser().then(function(data){ 
         //add user loc to loc 
         user.loc.lat = data.lat; 
         user.loc.lon = data.lon; 
         user.loc.radius = data.radius; 
         user.loc.set = true; 
         user.loc.inDB = true; 
         // start loading the book list 
         deferred.resolve(data); 
        }, function(err){ 
         user.loc.inDB = false; 
         user.loc.set = true; 
         deferred.resolve(data); 
        }); 
       }); 
      }); 
     } else { 
      this.loggedIn = false; 
      deferred.reject('error'); 
     } 
    }; 

, 구글에 로그인하지만, 어떤 나머지 클라이언트는 우리의 API에 요청을 만들 수 있습니다. 지금까지 우리가 (대강) 보호하려고 한 것은 요청을 통해 사용자 Google ID를 보내고 ID를 필터로 쿼리하는 것뿐입니다. 그러나, 나는 그렇게하는 것이 가장 적절한 방법이 아니라는 것을 알고 있습니다.

저는 OAuth로 토큰을 얻는 방법을 이해하려고 노력했지만 사용자가 정보에 동의하면 토큰이 한 번 나타나는 것으로 보입니다.

Google 프런트 엔드에서 백 엔드에서 요청을 만들고이 사용자가 진짜인지 확인하려면 어떻게해야합니까?

나는 이것으로 꽤 많은 어려움을 겪어 왔지만, 그렇게 열심히해야한다고 생각하지 않는다.

감사합니다. 서버 구글에서 토큰을 얻을 싶지 않아 위의 코멘트는 달리 http://tutorials.jenkov.com/oauth2/index.html

:

+0

서버 측에서 Google의 토큰을 가져 와서 유효한 로그인 후에 프론트 엔드로 다시 보내야합니다. 이후에 요청이있을 때 HTTP 헤더에서 보내고 토큰이 유효하면 서버 측의 유효성을 검사하도록 할 수 있습니다 신뢰할 수있는 – guilhebl

답변

0

첫째, 당신은 여기에 OAuth를 2. 잘 알고 싶어하는 것은 좋은 소개 튜토리얼입니다. 이는 최종 사용자가 귀하의 웹 페이지에 Google 자격 증명을 입력하지 않기 때문입니다. 따라서 프런트 엔드에서 Google 인증을 사용해야 사용자가 신뢰할 수있는 GUI를 사용할 수 있습니다.

OAuth 2를 사용하여 클라이언트 측에서 사용자를 인증하면 토큰을 받게됩니다. 귀하의 고객은 ReST API에 토큰을 제출해야합니다. 서버가 수행해야 할 첫 번째 작업은 해당 토큰의 유효성을 검사하는 것입니다.

마지막으로 서버는 토큰에 정보를 추가하는 데 필요한 경우 사용자 지정 토큰을 생성 할 수도 있습니다.

관련 문제