我正在构建一个使用OAuth进行身份验证并向用户授予帐户访问权限的应用程序。
当前的身份验证流程如下:
SFSafariViewController
AppDelegate
我列出了所有工作,但是,我不知道如何存储我在向服务注册我的应用程序时授予的客户端ID和客户端密钥。客户端ID和客户端密钥应安全保存,不得共享。当用户为OAuth令牌交换它们时,将使用它们。
由于我使用GitHub进行版本控制,我是否在应用程序中创建属性列表来存储项目?如果是这样,我可以将该文件添加到我的.gitignore
。这是存储我的凭据的合适方法吗?
答案 0 :(得分:0)
如果我理解你的问题(你需要为每个用户存储密钥),你可以将它们存储在iCloud容器中。基本上它就像UserDefaults,但在用户的iCloud中。你可以在那里写作和阅读。有关详细信息,请查看此docs。
让我知道是否有帮助因为我不确定我的问题是否正确。如果没有,请以其他方式解释:)谢谢
答案 1 :(得分:0)
您不应在本机应用中存储客户端密码,因为它是a public client。本机应用程序无法保护资源所有者的数据(因此也无法保护客户端机密)。
客户端机密适用于能够正确隐藏客户端密钥的服务器(或任何机密客户端)。您可以通过HTTPS处理来自移动应用程序的传入请求的服务器(可以存储客户端密钥),然后将访问/刷新令牌发送回您的移动应用程序。