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