Ger*_*ero 11 shared keychain ios
我正在设计一个与域名相关联的新应用程序的登录,即与SPA的对应物.显然我想用
我已阅读有关自动填充的文档以及观看WWDC视频.另外,我查看了有关共享Web凭据的文章,我认为该文章比新的,重新设计的自动填充更早.文章建议:
不要将共享Web凭据用作安全用户凭据的主存储.而是将用户的凭据保存在钥匙串中,并且只有在您无法在钥匙串中找到登录凭据时才使用共享的Web凭据.
这让我有点奇怪,因为它 - 意味着我必须涵盖更多可能的不一致,即以某种方式与共享的Web凭据同步密钥链(如果我在密钥链中有凭据以及共享的Web凭据,但它们是不同的?) - 如果我的用户用户卸载我的应用程序,可能会在钥匙串中留下"垃圾"(我自然希望他们不会这样做,但让我们现实,有些人会这样做)
特别是最后一点在过去一直困扰着我(在共享Web凭据和自动填充之前,或者当我的应用程序没有关联的域时).与macOS不同,iOS帐户和密码功能(在"设置"应用程序中)不会列出所有密码,只会列出Safari使用的密码(即共享的Web凭据),对吗?MacOS上的Keychain Access提供了一种查看和管理所有凭证的方法,甚至是那些未通过iCloud同步的凭证.
我理解为什么在iOS上没有提供相同的功能,但它也意味着我的应用程序保存(本地)到"其"钥匙串"部分"的那些密码只有在我的应用程序中为此提供UI时才能进行管理.如果用户在使用之前卸载应用程序,该项目将保留在钥匙串中,至少在几年前我尝试过时就是这样.
我现在的主要问题是,忽视文章的建议并仅依靠共享的Web凭据进行密码存储会不会更容易?这是他们可以在"设置"中编辑的部分(如果需要的话),它也将反映在网站上完成的任何密码更改.我会像这样设计我的应用程序:
这种设置可以避免在钥匙串和共享网络存储中使用不同项目的任何问题,并且它会立即将在网页中完成的更新传播到应用程序(这也是我对我的应用程序的意图).有没有什么可以阻止这个应用程序流动?
(注意:我在苹果开发人员论坛上问了同样的问题,所以如果你看到它也不要混淆.我会更新任何可能的答案从那里到现在,反之亦然.)
编辑以解决@Aaron的回答:
非常感谢您的信息.您的回答帮助我意识到我误解了共享Web凭据的一些内容:我认为对于具有关联域的应用程序,您可以在没有用户交互的情况下访问凭据(可能是初始授权之后).就像您可以在应用程序请求凭据时在macOS上设置复选框.我现在意识到这是错误的,在iOS上你总是需要与用户核实,谢谢.
为了完整起见,我还想指出你说的其他一些事情:
再次,非常感谢你的回答,现在我可以关闭一个开放的待办事项.:)还要感谢@HamZa给予奖励!
考虑以下建议:
不要将共享的Web凭据用作安全用户凭据的主要存储。而是将用户的凭据保存在钥匙串中,并且仅当在钥匙串中找不到登录凭据时才使用共享的Web凭据。
这里的主要问题是,共享的Web凭据过程有点笨拙-它需要用户交互并且需要时间来解析凭据。因此,如果用户已经通过您的应用程序进行了身份验证,则完全希望避免向他们显示登录页面。您可以通过将凭据存储在应用程序的钥匙串中来实现此目的,您无需网络连接或用户许可即可立即访问它们。
这并不意味着您需要在钥匙串中存储用户的密码。通常,您会在钥匙串中存储OAuth访问令牌之类的东西。此令牌的存在意味着用户已通过身份验证-如果API端点拒绝了您的令牌,则可以将其带回登录页面。
这个建议:
用户登录:App在共享的用户默认设置中保存一个简单标志,指示该用户已登录。
可能会不安全,具体取决于您在登录页面后隐藏的内容,但是通常,属于用户的任何内容都需要有效的令牌才能访问,而不仅仅是用户默认的布尔值。
我认为这最符合用户的意图(如果您删除密码,则您不希望某些应用程序在您注销之前保留该密码)
我不同意这一点。我不希望iOS应用程序注销,因为我从Safari钥匙串中删除了密码。
| 归档时间: | 
 | 
| 查看次数: | 895 次 | 
| 最近记录: |