iOS端App与网站如何通过iCloud Keychain实现登录凭证共享
结论
可以实现,该能力由苹果官方iCloud Keychain的跨端凭证共享机制提供,全程由系统侧处理凭证的存储、同步和填充,符合苹果隐私合规要求。
实现步骤
前置要求
- 你的网站与iOS App需归属同一开发主体,使用同一个Apple Developer账号完成配置
- 用户设备需开启iCloud Keychain功能(iOS系统默认引导用户开启,主流iOS用户均已启用该能力)
网站侧配置
- 在你的域名服务器根目录下放置苹果关联验证文件,文件名为
apple-app-site-association,不得添加.json后缀,必须支持HTTPS访问,访问路径为https://你的域名/.well-known/apple-app-site-association - 文件内添加
webcredentials字段,填写你的iOS App标识,示例配置如下:
{ "webcredentials": { "apps": [ "你的Apple Developer Team ID.你的App Bundle ID" ] } }
- 网站的登录、注册表单需符合HTML自动填充规范:账号输入框添加
autocomplete="username"属性,密码输入框添加autocomplete="new-password"(注册场景)或autocomplete="current-password"(登录场景)属性。用户提交表单后系统会自动触发凭证存入iCloud Keychain的提示,无需额外开发代码。
iOS原生端配置
- 打开Xcode项目,在
Signing & Capabilities页签下添加Associated Domains能力 - 在Associated Domains列表中新增条目,格式为
webcredentials:你的域名,例如域名是example.com则填写webcredentials:example.com - 登录页的输入框设置对应
textContentType属性:- 账号输入框:
textContentType = .username - 密码输入框:
textContentType = .password
- 账号输入框:
- 无需额外编写凭证读写代码,系统会自动校验关联域名匹配关系,用户点击输入框时会自动弹出iCloud Keychain中存储的对应网站凭证,用户确认后即可自动填入表单。
常见问题
- 配置后不生效:关联域名的验证存在缓存周期,首次配置最长可能需要24小时同步,测试时可卸载重装App触发即时校验
- 无法触发填充:确认用户设备登录的Apple ID已开启iCloud Keychain同步,且网站存储凭证的域名与App关联的域名完全匹配
内容的提问来源于stack exchange,提问作者netshark1000
相关产品推荐
相关产品推荐

