如何在iOS中存储客户端ID/客户端机密字符串

如何在iOS中存储客户端ID/客户端机密字符串,ios,oauth,Ios,Oauth,我正在构建一个应用程序,它使用OAuth对用户进行身份验证并授予帐户访问权 当前的身份验证流程如下所示: 创建新应用程序 向API服务注册应用程序 安全地存储授予的客户端ID和客户端机密 启动应用程序 应用程序在SFSafariViewController 用户批准应用程序以访问其服务帐户 对应用程序的回调提供代码,该代码在AppDelegate 发布通知,将代码传递给视图控制器,该视图控制器将启动请求,以交换用于验证后续请求的OAuth令牌的clientID、客户端机密和代码 发送带有客户端I

我正在构建一个应用程序,它使用OAuth对用户进行身份验证并授予帐户访问权

当前的身份验证流程如下所示:

  • 创建新应用程序
  • 向API服务注册应用程序
  • 安全地存储授予的客户端ID和客户端机密
  • 启动应用程序
  • 应用程序在
    SFSafariViewController
  • 用户批准应用程序以访问其服务帐户
  • 对应用程序的回调提供代码,该代码在
    AppDelegate
  • 发布通知,将代码传递给视图控制器,该视图控制器将启动请求,以交换用于验证后续请求的OAuth令牌的clientID、客户端机密和代码
  • 发送带有客户端ID、客户端密码和代码的请求以交换OAuth令牌
  • 将令牌存储在密钥链中以供后续API请求使用
  • 我已经列出了所有功能,但是,我不知道如何存储在向服务注册应用程序时授予我的客户ID和客户机密。客户ID和客户机密应安全保存,不得共享。当用户将它们交换为OAuth令牌时,将使用它们


    由于我使用GitHub进行版本控制,我是否在应用程序中创建属性列表来存储项目?如果是这样,我可以将该文件添加到我的
    .gitignore
    。这是存储我的凭据的合适方法吗?

    如果我正确理解您的问题(您需要为每个用户存储密钥),您可以将它们存储在iCloud容器中。基本上,它类似于UserDefaults,但在用户的iCloud中。你可以在那里写作和阅读。查看此以了解更多信息


    让我知道这是否有帮助,因为我不确定我是否正确回答了你的问题。如果没有,请用另一种方式解释:)谢谢

    您不应该在本机应用程序中存储客户端机密。本机应用程序无法保护资源所有者的数据(因此是客户端机密)


    客户机机密用于能够正确隐藏客户机机密的服务器(或任何机密客户机)。您可以启动一个服务器(在那里可以存储客户端机密),该服务器通过HTTPS处理来自移动应用程序的传入请求,然后将访问/刷新令牌发送回移动应用程序

    我想你不明白我的问题,但我很感激你的回答。我编辑了我的问题,以便更好地解释工作流程和实施细节。