一、keychain介绍(摘抄别人的https://blog.hudongdong.com/ios/356.html)

根据苹果的介绍,iOS设备中的Keychain是一个安全的存储容器,可以用来为不同应用保存敏感信息比如用户名,密码,网络密码,认证令牌。苹果自己用keychain来保存Wi-Fi网络密码,VPN凭证等等。它是一个sqlite数据库,位于/private/var/Keychains/keychain-2.db,其保存的所有数据都是加密过的。

开发者通常会希望能够利用操作系统提供的功能来保存凭证(credentials)而不是把它们(凭证)保存到NSUserDefaults,plist文件等地方。保存这些数据的原因是开发者不想用户每次都要登录,因此会把认证信息保存到设备上的某个地方并且在用户再次打开应用的时候用这些数据自动登录。Keychain的信息是存在于每个应用(app)的沙盒之外的。

这个数据是存在系统的,所以就算卸载软件,也照样存在机器中,除非恢复系统。

所以他本质上是一个数据库,所以他可以给单个app 使用, 也可以多个app 共享一组数据。当然这是同一开发者下的多个app,不同开发者之间还是隔离的。

二、使用

a、keychain

每个app安装以后,都会生成一个默认的 accessgroup ,格式为{teamId}.{bundleId}.不用多做任何操作,直接使用SAMKeychain 其他第三方库调用存储或获取。不用去设置accessgroup,默认就app自己私有accessgroup。好了到这里完全没有问题。

b、keychain share

现在的问题是我的多app 怎么使用keychainshare,它的存在就是为了在多个 app之间共享一些数据。

比如现在有A、B、C 三个app,他们默认的私有accessgroup,{teamId}.{bundleIdA},{teamId}.{bundleIdB},{teamId}.{bundleIdC}。说他们 私有是相对的,因为即使是它们的私有accessgroup,也是可以被其他两个app 访问的, 只要,三个app都在keychaingroups都设置了{teamId}.{bundleIdA} 这个accessgroup,那么三个app都是都是访问这个accessgroup的内容的。

比如三个app的设置如上图,那appA 能访问{teamId}.{bundleIdA}。appB,AppC能除了能访问自己的私有accessgroup 之外,还能访问{teamId}.{bundleIdA}。所以accessgroup没有私有只说,只要把他设置在了keychaingroups,其他app也就取得了这个accessgroup 的访问权限。当然accessgroup也可以设置一个完全跟appId无关的共享的accessgroup,比如{teamId}.xxxx shared等等。

到这就完了吗,当然不是。

使用SAMKeychain 存取的方法,是不带 accessgroup 的,所以有的人就忽略了这点,拿到的值是app默认的accessgroup 中的。它是怎么个默认法的, 简单就是刚装上的时候是,默认的私有accessgroup:teamId}.{bundleId},然后你一旦使用了其他accessgroup,以后这个accessgroup就是默认的accessgroup(在不设置accessgroup)情况啊下存取。

所以在使用keychai-share的时候,accessgroup一定要带上, 不然你都不知道你是从哪个accessgroup 中取的值。

SAMKeychain 对keychai-share 使用就不友好, 所以把它修改了一下, 有需要的取。

https://download.csdn.net/download/qqylgd/21549783

iOS Keychain和keychain share相关推荐

  1. iOS UUID配合keychain的替换方案实现

    iOS的keychain服务提供了一种安全的保存私密信息(密码,序列号,证书等)的方式,每个iOS程序都有一个独立的keychain存储.相对于NSUserDefaults.文件保存等一般方式,key ...

  2. iOS中的KeyChain的用途

    ios中KeyChain用途 一.在应用间利用KeyChain共享数据 我们可以把KeyChain理解为一个Dictionary,所有数据都以key-value的形式存储,可以对这个Dictionar ...

  3. 保护 iOS 用户数据安全: Keychain 和 Touch ID

    原文:How To Secure iOS User Data: The Keychain and Touch ID 作者:Tim Mitra 译者:kmyhy 更新说明:本教程由 Tim Mitra ...

  4. iOS密码管理Keychain的使用

    keychain(钥匙串)存储在iOS系统中,并且恢复iPhone会使keychain的内容也恢复.但是删除App是不会影响keychain. 不同App之间Keychain是不能相互访问的,但是可以 ...

  5. iOS 开发 -- 使用KeyChain保存用户名、密码并实现自动登录

    一.前言 我的话,只是写了个keychain使用的工具类,让我们使用的时候可以直接调用接口,以求方便. 但是关于keychain的一些概念还有一些官方API我都不打算说的,当然你要看下面一些东西的话可 ...

  6. html5 ios keychain,iOS Keychain理解

    Keychain 介绍 Keychain Services 是 OS X 和 iOS 都提供一种安全地存储敏感信息的工具,比如,存储用户ID,密码,和证书等.存储这些信息可以免除用户重复输入用户名和密 ...

  7. ios使用KeyChain获取唯一不变的udid

    本文是iOS7系列文章第一篇文章,主要介绍使用KeyChain保存和获取APP数据,解决iOS7上获取不变UDID的问题.并给出一个获取UDID的工具类,使用方便,只需要替换两个地方即可. 一.iOS ...

  8. iOS Keychain(钥匙串)原理及使用

    Keychain介绍 Keychain Services 是 macOS 和 iOS 都提供一种安全的存储敏感信息的工具,比如,网络密码:用户访问服务器或者网站,通用密码:用来保存应用程序或者数据库密 ...

  9. IOS keychain 使用

    首先使用keychain 要先导入 Security.framework 这个系统framework,然后在文件里 import 头文件,由于这个框架是c语言风格的接口API,会让人很疑惑,如果想快速 ...

最新文章

  1. 一个button导致的慘案
  2. Django之 RESTful规范
  3. 洛谷 1057——台阶问题(递推与递归二分)
  4. RMAN CATALOG命令手动注册磁带库中的备份片
  5. LeetCode--057--插入区间(java)
  6. 初学C语言2--C语言项目的基本框架
  7. Android开发简单购物app源码,校园购物APP源码(适合新手学习)
  8. 重庆邮电大学c语言题库
  9. PG Doc:17章1-3小节翻译
  10. 年味变淡是从我们变得随便开始的
  11. 交易开拓者-附录二:函数速查
  12. 【2022 年“SPSSPRO 杯”数学中国数学建模网络挑战赛】A题 人员的紧急疏散-第二阶段23页论文
  13. Pidgin for windows 与MSN、ICQ、QQ、YAHOO、GoogleTalk、AIM/AOL等网络聊天工具互联互通的新型聊天软件
  14. the spell of the rising moon
  15. sql server 2005安装内存不能读
  16. android:stretchcolumns=0,1,2,3,stretch_stretch是什么意思
  17. 网络工程师的基本职责,你能当一个合格的网络工程师吗?
  18. 黑猴子的家:Scala Case语句的中置(缀)表达式
  19. 合宙 ESP32C3 烧录 Micropython 后连接端口报错
  20. 小米平板4无信号服务器,小米平板4黑屏假死怎么办

热门文章

  1. Unity中实现文件加密
  2. PAT乙级 1070 结绳
  3. 正则表达式的介绍及应用
  4. 操作系统|时间片轮转调度算法(RR)
  5. ESP32 寻迹模块测试
  6. 工业机器人与视觉实训平台
  7. rsi c语言算法,RSI指标的原理计算过程
  8. 基于SpringBoot前后端分离的众筹系统(附源码)
  9. ReactNative进阶(三十五):应用脚手架 Yo 构建 RN 页面
  10. 基于LM的双目图像校准算法源码第一部分