在移动应用上保护第三方API调用

时间:2016-02-12 08:26:47

标签: api oauth oauth-2.0 http-basic-authentication

我有一个使用以下方法的API:

https://api.example.com/services/dosomething

我向三个不同的移动应用程序提供此服务,每个应用程序都有数百个用户。当用户登录移动应用程序时,需要调用我的API。

我知道为三个移动应用程序中的每一个提供不同的API密钥并使用它进行 HTTP基本身份验证是不安全的,因为API密钥会不安全地存储在设备中可以接受它并且不好用它。

OAuth2 的方法不起作用,因为我只有三位客户的信息,而不是数百名用户的信息。

在移动设备上保护API调用的最佳方法是什么?

1 个答案:

答案 0 :(得分:5)

在您的情况下,您使用OAuth2的方法很好:移动应用程序(客户端)从资源所有者(您的用户)接收委派以调用资源服务器(您的API)上的受保护资源。

您只有关于客户的信息,因为OAuth2不是专门用于您的用户身份验证,而是专门为您的客户授权。 客户端使用客户端ID进行标识。在您的情况下,如果您想知道哪个客户端调用您的资源服务器,那么每个客户端都应该有一个专用的客户端ID。您还可以使用其他信息识别它,例如IP地址或其发送的请求中的自定义标头。

如果您想知道自己的用户是谁,则应实施OpenID Connect扩展名。此扩展程序在基于OAuth2的授权服务器之上运行。 用户的认证由授权服务器执行。向ID令牌发布关于用户的信息。客户端(或移动应用程序)不必获取或存储用户的凭据。

有一个excellent video where the both protocols are explained(特别是从4:44到11:00)。