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,
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? –
@ 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. –