0

Aşağıdaki Google Cloud Uç Noktaları API'm var ve bunun yalnızca belirli bir rolü olan kimliği doğrulanmış kullanıcılar için erişilebilir olmasını istiyorum. kodGoogle App Engine'de tüm API Bitiş Noktalarının Kimlik Doğrulamasını Doğrulama

Az çizgiler bin kelimeden daha çok daha söylüyor:

import com.google.appengine.api.users.User; 

@Api(
    name = "heroesApi", 
    version = "v1", 
    clientIds = {...}, 
    scopes = {...}, 
    audiences = {...}, 
    namespace = @ApiNamespace(
     ownerDomain = "my.domain.com", 
     ownerName = "my.domain.com", 
     packagePath="" 
    ) 
) 

public class HeroesApi { 

    // THIS IS THE FUNCTION THAT I DON´T KNOW WHERE TO PUT 
    /** 
    * Validates that the user is logged in with a specific role 
    * @param user 
    * @throws UnauthorizedException 
    * @throws ForbiddenException 
    */ 
    private void validateUser(User user) throws UnauthorizedException, ForbiddenException { 
     IUserController userController = ControllerFactory.get.userController(); 
     if (user == null) { 
      throw new ForbiddenException("You must be logged in, my friend."); 
     } else if (!userController.isLoggedAsSuperHero(user)) { 
      throw new UnauthorizedException("You must be logged in as a Superhero."); 
     } 
    } 


    // API METHODS 

    @ApiMethod(path = "something", httpMethod = ApiMethod.HttpMethod.PUT) 
    public DoneTask doSomething(Some thing, User superhero) throws UnauthorizedException, ForbiddenException { 

     // this is what I want to avoid on each function 
     this.validateUser(superhero); 

     // Now I'll do something special 
     IUserController userController = ControllerFactory.get.userController(); 
     return userController.doSome(thing); 

    } 

    // MORE GORGEOUS METHODS JUST FOR SUPERHEROES, SO I HAVE TO PERFORM THE VALIDATION... 

} 

ı olsa tüm isteğine/API/heroesApi/*, ama sorun için web.xml dosyası aracılığıyla bir filtre ekleme hakkında Google Appengine Api Kullanıcısı'nı nasıl yakalayacağınız var.

Bunu yapmak için Google tarafından sağlanan bir şey yok mu? Başvurunuz rol kavramını oluşturmak zorunda

validateUser(User) tekrar tekrar aramayı önlemek için herhangi bir öneri,

+0

Bu nedenle, açık olmak gerekirse, J2EE kimlik doğrulamanızın Google Cloud aracılığıyla kimin kimliği doğrulandığını belirlemesini istiyorsunuz? –

+0

@ tim-biegeleisen Kullanıcıyı sınıf düzeyinde değil, yöntem düzeyinde doğrulamak istiyorum. Bahsettiğim şekilde yapmak bir geçici çözüm gibi olurdu, ancak işe yararsa benim için yeterli. –

cevap

0

Google Bulut Endpoints varsayılan olarak rollerini yemeğe gelmez açığız, ve filtreyi yazmak ve mevcut kullanıcıyı almak zorunda ve senin sonunda muhafaza rollere karşı kontrol

filtresinde geçerli kullanıcı almak için, bu https://cloud.google.com/appengine/docs/java/oauth/

Bu test değil çalışıyorum ama AppEngine içinde UserService Api'si ile geçerli kullanıcı alabilirsiniz eminim Senin kadar uzun r sistemi, kimlik doğrulama olarak google hesabını kullanır.

İlgili konular