gpt4 book ai didi

iphone - 如何为移动应用程序设计安全的 API/身份验证以访问服务?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:35:20 26 4
gpt4 key购买 nike

我想提供我的网络应用程序的一些功能以供其他应用程序使用(我主要考虑智能手机,因为它们提供更多功能,例如 GPS、相机等)。

根据我目前在其他 API 方面遇到的情况,例如GoogleMaps,是第 3 方开发人员会在我的网站上注册自己,他得到一个 API key (一些随机 UUID),他必须使用它来验证他对我网站的请求。到目前为止一切顺利...

是否有一种机制可以保护移动应用的最终用户免受恶意应用的侵害?例如。第三方开发人员可以构建一个应用程序并从最终用户那里获取所有用户名/密码,这样他就可以用用户帐户做坏事。(例如,我可以构建一个推特应用程序,捕获所有用户名/密码,然后删除他们所有的推文,发布新推文,..)有没有可能阻止这种情况?据我所知,您可以在网络上使用 oauth,这样我的 网站登录框就会出现在另一个网站上,并询问他们的用户名/密码,这样它就不会显示给第 3 方网站。是否可以为智能手机应用程序实现安全身份验证?你会怎么做?

最佳答案

对于 Android 和 iPhone,您可以毫无问题地使用 OAuth,到目前为止,我认为这是最好的方法。

这两种智能手机类型的流程与网络应用程序相同,因为这两种操作系统都让您可以从您的应用程序启动网络浏览器并将用户重定向到网络提供商,这样他就可以授权您的请求( token ),然后浏览器可以通过适当的回调 URI 将您的用户返回到应用程序。我还没有为手机实现 oauth,但我从 friend 那里听说这是可能的,并且移动浏览器可以使用一些特殊的 URI 将用户重定向回您的应用程序,例如 scheme://app/parameters

这里有一些关于 android 的东西:link

有两种 oauth 用例:2 条腿和 3 条腿

两条腿是指您想要保护您的 API,以便它只能从经过身份验证的消费者应用程序调用。这是自古以来就存在的流行方案 AFAIK - 消费者使用消费者共享 key 对每个请求进行签名,而提供者(您的 API)也对请求进行签名以查看签名是否匹配。通过这种方式,您可以判断该消费者是否可以使用 API。

三足 oauth 包括消费者第 3 方应用程序的最终用户。它非常适合,如果你想像 2-legged 一样再次保护你的 API,因为请求仍然是签名的,而且你的 API 也可以通过最终用户的许可来保护。 API 的提供者发出 token 并将其提供给消费者应用程序(第 3 方应用程序)。然后此应用程序将 token 保存在本地并将用户重定向到提供商以对 token 进行授权。当用户授权时,提供者将用户发送回消费者应用程序,然后消费者可以向您的 API 发出经过身份验证(签名)和授权(由用户 - 第三步)的请求。

一旦您阅读了它的工作原理,该协议(protocol)就不是很复杂,并且非常灵活 - 您可以根据需要随意扩展它。我强烈推荐它来保护 API,尤其是在访问 API 需要用户许可的情况下。

这是一个非常好的阅读 oauth 的网站:http://hueniverse.com/oauth/

--- 添加 ---

消费者应用程序中的共享 key 存储存在一些安全隐患 - 在您的案例中是手机应用程序。

如果有人打开您的程序并反汇编代码并提取共享 key ,那么他就可以创建将成功向提供者 API 进行身份验证的应用程序。但是,如果需要用户授权(三足),这不是一个大问题,因为仍会要求用户授予此虚假应用程序的权限 - 现在由用户做出正确的选择。除此之外 - 虚假应用将无法窃取用户的凭据,因为使用 oauth,用户凭据只能在提供商的网站上输入。

关于iphone - 如何为移动应用程序设计安全的 API/身份验证以访问服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5340252/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com