我拥有一个移动应用,希望它能够使用我的网络API。我计划使用oauth2用户凭据流(https://bshaffer.github.io/oauth2-server-php-docs/grant-types/user-credentials/)。
但是,我想验证应用以及用户凭据(我不希望任何其他应用或用户通过我的API验证,以便在此应用之外使用)。
我看到该库指定了这个:
$ curl -u TestClient:TestSecret https://api.mysite.com/token -d 'grant_type=password&username=bshaffer&password=brent123'
这对我有用,但它假设每个下载的移动应用程序(它是公开的)都需要将TestClient:TestSecret预先加载到应用程序中。
如何确保不会从应用中提取这些内容,以允许用户使用其他应用/系统等的用户凭据调用我的API?
答案 0 :(得分:0)
如果预先加载,则无法进行。你只能增加工作因素,使其更难,并减少成功的攻击者。
一种解决方案是让用户登录您的服务器并在此时获取凭据,然后将其存储在钥匙串中。关于Dropbox和类似应用程序如何处理这个问题。但即使保留用户的凭据也是一个难题。
下一期是中间人(MITM)攻击,你需要在应用程序中固定证书以避免这种情况。