Google Cloud Endpoints自定义身份验证

时间:2015-05-07 19:19:21

标签: android google-app-engine google-cloud-endpoints

我对谷歌云端点很新,我想知道如何使用端点使用Auth,教程here很好,但我不明白这一点:

  • 它说,我应该添加一个用户( com.google.appengine.api.users.User )参数到后端的auth方法。如果我想使用android作为客户端部分,我应该提供GoogleAccountCredential对象来进行经过身份验证的调用[2]。 GoogleAccountCredential以这种方式创建
credential = GoogleAccountCredential.usingAudience(this,
"server:client_id:1-web-app.apps.googleusercontent.com");
credential.setSelectedAccountName(accountName);

accountName是Google帐户的名称,因此我假设拥有Google帐户且正在使用我的Google Cloud Endpoint应用程序的所有人都可以创建GoogleAccountCredential对象并对后端进行经过身份验证的调用。

但是我的后端显然有很多方法,只能由我的应用程序的某些用户调用。 (例如:有一个方法,它会给我一个关于我朋友的详细信息,很明显这个方法只能由他的朋友调用。)。因此我的问题是:有没有办法将com.google.appengine.api.users.User映射到我的自定义用户实体,以便可以检查用户是否真的有权调用后端的方法,而不仅仅是知道该方法是由具有Google帐户的用户调用的吗?我应该为此编写自定义身份验证器,如果是这样,你能告诉我怎么做?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以设置一个将处理自定义身份验证的Authenticator类。 https://cloud.google.com/appengine/docs/java/endpoints/javadoc/com/google/api/server/spi/config/Authenticator 你只需要在@ApiMethod中设置authenticators参数,你就可以编写自己的认证逻辑