mix*_*lan 21 google-app-engine google-cloud-endpoints google-cloud-platform
API是移动应用的后端.我不需要用户身份验证.我只需要一种方法来保护对此API的访问.目前,我的后端暴露无遗.
该文件似乎只谈用户认证和授权,这是不是我需要在这里.我只需要确保只有我的移动应用程序可以与此后端进行通信,而不是其他任何人.
是的,您可以这样做:使用身份验证来保护您的端点,而无需进行用户身份验证。
我发现这种做法没有很好的记录,而且我自己也没有真正这样做过,但我打算这样做,所以当我看到一些 IO13 视频中讨论它时我注意到了(我认为这就是我的地方)看到了):
以下是我对所涉及内容的理解:
您将把这些客户端 ID 添加到端点的可接受 ID 列表中。您将向端点添加 User 参数,但由于未指定用户,因此该参数将为空。
@ApiMethod(
name = "sendInfo",
clientIds = { Config.WEB_CLIENT_ID, Config.MY_APP_CLIENT_ID, Config.MY_DEBUG_CLIENT_ID },
audiences = { Config.WEB_CLIENT_ID }
// Yes, you specify a 'web' ID even if this isn't a Web client.
)
public void sendInfo(User user, Info greeting) {
Run Code Online (Sandbox Code Playgroud)
关于上述内容有一些不错的文档,此处: https ://developers.google.com/appengine/docs/java/endpoints/auth
您的客户端应用程序将在制定端点服务调用时指定这些客户端 ID。所有 OATH 详细信息都将在您的客户端设备上在后台处理,以便将您的客户端 ID 转换为身份验证令牌。
HttpTransport transport = AndroidHttp.newCompatibleTransport();
JsonFactory jsonFactory = new JacksonFactory();
GoogleAccountCredential credential = GoogleAccountCredential.usingAudience( ctx, Config.WEB_CLIENT_ID );
//credential.setSelectedAccountName( user ); // not specify a user
Myendpoint.Builder builder = new Myendpoint.Builder( transport, jsonFactory, credential );
Run Code Online (Sandbox Code Playgroud)
这个客户端代码只是我最好的猜测 - 抱歉。如果其他人有关于客户端代码到底应该是什么样子的参考,那么我也会感兴趣。
| 归档时间: |
|
| 查看次数: |
3831 次 |
| 最近记录: |