我对谷歌 Cloud endpoints 很新,我想知道如何使用 endpoints 使用Auth,教程here很好,但我不明白这件事:
- 它说,我应该为后端的auth方法添加一个用户( com.google.appengine.api.users.User )参数 . 如果我想使用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 回答
您可以设置将处理自定义身份验证的Authenticator类 . https://cloud.google.com/appengine/docs/java/endpoints/javadoc/com/google/api/server/spi/config/Authenticator你只需要在@ApiMethod中设置authenticators参数,你就可以编写自己的认证逻辑