View in English

  • Apple 开发者
    • 入门汇总

    探索“入门汇总”

    • 概览
    • 学习
    • Apple Developer Program

    及时了解最新动态

    • 最新动态
    • 开发者你好
    • 平台

    探索“平台”

    • Apple 平台
    • iOS
    • iPadOS
    • macOS
    • Apple tvOS
    • visionOS
    • watchOS
    • App Store

    精选

    • 设计
    • 分发
    • 游戏
    • 配件
    • 网页
    • Home
    • CarPlay 车载
    • 技术

    探索“技术”

    • 概览
    • Xcode
    • Swift
    • SwiftUI

    精选

    • 辅助功能
    • App Intents
    • Apple 智能
    • 游戏
    • 机器学习与 AI
    • 安全性
    • Xcode Cloud
    • 社区

    探索“社区”

    • 概览
    • “与 Apple 会面交流”活动
    • 社区主导的活动
    • 开发者论坛
    • 开源

    精选

    • WWDC
    • Swift Student Challenge
    • 开发者故事
    • App Store 大奖
    • Apple 设计大奖
    • Apple Developer Centers
    • 文档

    探索“文档”

    • 文档库
    • 技术概述
    • 示例代码
    • 《人机界面指南》
    • 视频

    发布说明

    • 精选更新
    • iOS
    • iPadOS
    • macOS
    • watchOS
    • visionOS
    • Apple tvOS
    • Xcode
    • 下载

    探索“下载”

    • 所有下载
    • 操作系统
    • 应用程序
    • 设计资源

    精选

    • Xcode
    • TestFlight
    • 字体
    • SF Symbols
    • Icon Composer
    • 支持

    探索“支持”

    • 概览
    • 帮助指南
    • 开发者论坛
    • “反馈助理”
    • 联系我们

    精选

    • 《开发者账户帮助》
    • 《App 审核指南》
    • 《App Store Connect 帮助》
    • 即将实行的要求
    • 协议和准则
    • 系统状态
  • 快速链接

    • 活动
    • 新闻
    • 论坛
    • 示例代码
    • 视频
 

视频

打开菜单 关闭菜单
  • 专题
  • 所有视频
  • 关于

更多视频

  • 简介
  • 转写文稿
  • 自动式强密码和安全码自动填充

    密码和安全码是现代安全和隐私保护不可或缺的一部分。iOS 12 通过自动建议和使用唯一的强密码 (甚至在 app 内也能实现),以及在快速输入栏中显示一次性安全码来方便用户轻点填充,从而将大大简化复杂的帐户设置和登录过程。了解如何优化您的 app,确保用户能够顺畅地使用密码、安全码和其他自动填充功能,从而让帐户更安全。

    资源

    • Password Rules Validation Tool
      • 高清视频
      • 标清视频
    • 演示幻灯片 (PDF)

    相关视频

    WWDC21

    • 使用摄像头在您的 app 中进行键盘输入

    WWDC18

    • Safari 浏览器和 WebKit 新功能
  • 搜索此视频…

    早上好 欢迎来到 204 会议 自动强密码及 安全码的自动填充 我的名字叫 Chelsea 在昨天的年度咨文中 你可能已经对自动强密码 以及安全码的自动填充 有所了解 今天 我非常兴奋能向你们 介绍更多有关这些功能的内容

    这些新功能和其他 iOS 12 里的功能将帮助 用户便捷地在你的 App 中 登录和创建帐号 如果你的 App 中有一个登录屏幕 或者帐号创建屏幕 那么这期会议就很适合你

    用户的一大难题是 处理密码

    这个问题很麻烦 00:01:08.196 --> 00:01:09.446 A:middle 即便是对那些使用最佳做法

    也就是用密码管理器来 创建和填写 密码的人来说也一样 对其他人来说 这就像是尝试做一些简单 但是不安全的操作 例如重复 使用他们在其他设备上已经 使用过的密码 或者使用一个 容易猜到的密码以便记忆

    我们知道最私人 最安全的方法 对你的用户来说 是在每个设备上使用 特殊的强密码

    我们都听说过由于破解 设备导致的用户 密码曝露 用户就需要对他们 使用的每个服务都进行 密码修改

    我们今天将讨论的 功能将帮助用户为 App 选择特殊的强密码 这样 你能够既帮助那些 有意识尝试使用 最佳密码的用户 也能帮助那些 不愿去想密码的用户 你的很多用户在使用 iCloud 钥匙串 我们今天将谈到的功能 是在钥匙串上建立的 它有最好的类安全性 同时它能在生物认证之下 保护用户的密码 Apple 没有通往 钥匙串内存储凭证的路径 所以用户的隐私同样是得到保护的 iCloud 密码钥匙串管理员 可以帮助用户在 App 上登录及 创建帐号

    我们在 iOS 12 上增添了一些新功能 从而使帐号的创建 和登录更加简单 我非常激动 要向你们 演示这些功能

    那么我现在要使用 Shiny 这个 App 这是我最喜欢用来 展示帐户创建和再次登录的 App 现在我要开始创建 点击创建帐户 我将停在邮件字段这里 你能看到系统给了我 一个建议的用户名 这是 iOS 12 的一个新功能 这些建议的用户名是 基于用户 已经储存在钥匙串里的 凭证产生的 由于我经常使用 Chelsea@example.com 所以我将 选择它作为我的用户名 不需要任何其他的点击 已经停在了密码字段 系统提供了一个唯一的强密码 同时我也被告知 我随时可以在设置里 查询这个密码 如果我需要将它 输入另一台可以使用 iCloud 钥匙串的设备 同样也可以操作 我将使用这个强密码进行注册 只需轻点几下 我就可以在 Shiny 上重新登录 在 Shiny 这个 App 上注册就完成了

    现在 让我们快进所有 其他的帐户创建 我打开了第二个 身份验证 让我们看看登回 Shiny 是什么样子 现在我将点击邮件处 就像你看到的 我刚才 创建的凭证已经出现在 快速输入条上选中它 然后 在面容 ID 出现后 我的密码和用户名已经被填写好 我可以登录了

    现在 我已经创建了第二个 身份验证 一般来说 我需要努力去 记住它或者去短信里找 但是就像你看到的 我刚刚收到的 第二重身份验证码已经 在快速输入条里显示了 所以 只需轻点一下 我就能 填入这个验证码 这是不是很了不起 [ 掌声 ] 所以 我可以填入验证码 提交 再一次 使用极少量的轻点 我就又重新登录回了 Shiny 回到展示页面 就像你们看到的 使用自动强密码创建一个帐号 是快速而容易的 我不需要去想密码 因为系统已经提供了一个 并且被输入到了密码字段

    同样 当我重新登录回 Shiny 时 我也不需要去想密码 密码已经真正成为了 一个实现细节 当我使用自动强密码和密码自动填充 来登录我的 App 的时候 这里是今天的会议安排 首先 我们将快速 回顾一下密码自动填充 因为我们今天要 讲到的很多功能是基于 这个功能之上的

    接下来 我们将谈谈如何 确保自动强密码 在你的 App 上顺利运行 然后 我们将讲到安全码的自动填充

    接着 我们将讲到 使用第三方服务进行 联合身份验证

    最后 我们将讨论一些 iCloud 密码钥匙串管理器 为我们提供的 新的密码管理功能 在 iOS 11 里我们引入了 App 里的密码自动填充

    今天我们将要介绍的 新功能采用 和之前那个功能 一样的方式 密码自动填充帮助用户 登录 App 只需在快速输入条上 显示登录凭证 这里我们快速地回顾一下 如何确保这个功能在你的 App 上顺利运行

    iCloud 钥匙串密码管理器里 的密码是储存在 网页的域名上的 例如 Apple.com 所以 很重要的一点是 将你的 App 和 网页的域名联系起来 这样我们就有信心 在快速输入条上显示登录凭证 你已经有了这项 如果你已经使用了 通用链接或接力 加入这项关联就 非常容易 你需要对你的 App 的 授权文件做一个小的修改 这样你就可以通过 你的网络域名访问文件

    如果你希望更加深入地了解 如何对这项关联进行设置 你可以去看看 WWDC 2017 的 App 密码自动填充部分 很重要的一点是 永远将你的字段标记为文本内容类型 这样自动填充就能在 正确的地方显示 将你的用户名字段标记为 用户名内容类型

    将用户需要填写 或者已有帐户的密码字段 标记为密码内容类型

    如果你选择 不在密码字段使用安全文本输入 那么将你的字段标记为 密码内容类型 就一点尤为重要 这样做 我们会知道我们处在 密码环境中

    我们已经讨论了如何 将密码自动填充进 你的 App 下面让我们来讨论 这个功能做了哪些改进

    自从 iOS 11.3 以来 WKWebView 一直支持密码自动填充功能 这将帮到你的用户 如果你的登录界面使用的 是网页技术的话 iOS 12 新的一点在于 App Store 里的密码管理器可以提供 自动填充的内容信息 这意味着你做出的任何 支持 iCloud 钥匙串密码管理器 00:07:41.586 --> 00:07:42.856 A:middle 在你的 App 中

    填充密码的工作 都能同样帮助那些使用其他 密码管理器的用户

    如果你是一个密码管理器的 开发人员 请参考 自动填充凭证提供程序扩展

    在 iOS 12 里当用户以一个 新的账户登录时 我么现在可以提供存储凭证的功能

    这样 用户可以 在你的 App 和网页中使用这些凭证 也可以在其他所有设备上

    让我们来聊聊如何确保 用户获得在你的 App 中存储以及更新 密码的提示 这就是存储运行的原理 首先 自动填充意味着 我们处在登录场景

    然后 自动填充 通过检查你的 App 和网页域名之间 是否有关联来确认 你的 App 的合格性 没有这层关联 密码存储服务将无法提供 接着 它将找到用户名和密码字段 然后才可以确定哪些数据是需要 储存在新凭证里

    之后 它能探测到登录 行为的发生

    最后 自动填充将决定 是否存储或者更新这个密码 依据是判断这是否是一个 尚未存在在钥匙串里的 全新凭证 或者用户是否正在更新 现有的凭证 现在 这项功能在 iOS 12 环境下 在你的 App 中没有发生变化 但是让我们来聊聊一些你可以采取的步骤 以确保这项功能可以成功运行 首先 请确保将你的字段 标记成为用户名及密码的内容类型 例如 当信号发生时 使用输入密码的时候 请确保将你的 用户名和密码字段 从视图层级移除 这样 自动填充就可以探测到 登录的发生

    你可以通过撤销 你的登录字段所在的 视图控制器来实现 请确保仅仅清除 用户名及密码字段 在他们从视图层级 被移除之后 这样 我们能够读取 数据然后将它存储到凭证中 请确保自动填充功能 将凭证存储到正确的域名里 你可以通过将 密码保存在你的 App 里 然后在设置里核对 凭证存储的地方来进行确认 如果你发现自动填充并没有 存储到正确的域名里 你可以将保存的地方重载 通过使用 与域名服务相关联的网页凭证

    最后 当用户登录你的 App 时 你之前可能已经使用了 SecAddSharedWebCredential 来人工存储凭证 但是 既然现在自动填充可以 自动地将用户的 密码存储 你可能就将不再需要它了

    你可能仍然希望使用它 如果你的 App 在登录界面 有网络视图 并不支持密码的存储 所以 这就是一些 我们目前为止讨论出的关键步骤 以确保在你的 App 中可以实现 填充和存储密码 请确保将你的 App 与网页域名相关联将你的字节 标记为用户名和密码内容类别

    对于存储密码 请确保登录你的 App 时 保存提示符会出现 来保证登录活动被检测到

    通过确保密码自动填充 在你的 App 上可以正常运作 你将帮助你的用户简化登录过程 对于新用户来说 他们与你的 App 产生的第一个互动就是 创建一个帐户

    在我的演示中你们已经看到 自动强密码如何使这个过程变得 非常简单 我想要邀请 Reza 来到台上 介绍如何确保 自动强密码在你的 App 上运行 谢谢 [ 掌声 ] 谢谢你 Chelsea

    大家好 我是 Reza 很兴奋能 向你们介绍所有关于 自动强密码的内容 帐户创建是一个让很多用户 感到沮丧的地方 他们有可能离开你的 App 永不再回来 或者就像他们中很多人做的那样 决定使用一个弱密码或者 重复使用同一个密码 这样做极大地削弱了他们帐户的安全性 虽然 这可能是一种创建帐户的 替代方法 你们当中有些人对 在登录帐户时 允许使用社交媒体有所疑虑 自动强密码 使得帐户创建变得很简单 它为注册的过程 带来了便捷性与安全性 用户不需要思考或者 担心密码

    自动填充甚至为用户名提供建议 以此来简化注册流程 用了自动强密码 帐户创建只需几下轻点而已 这样 用户将更倾向于 注册及使用你的服务 现在 我将谈谈 自动强密码是如何运行的 与 Chelsea 在 登录场景下的解释十分类似 当你的 App 显示一个视图控制器时 自动填充就会推断它的类型 这种情况下 它是一个注册视图控制器

    它将检查你的资格 检查你的 App 的资格 基于被关联的域名 以此来判断是否能够存储密码 如果是这样的话 自动填充将检测相关的 注册表格元素 用户名及密码 一旦用户名字段成为第一响应者 自动填充便会提供 建议用户名 这是我们在 iOS 12 里加入的 一个新功能 用户可以使用 建议的用户名 最终 密码字段 成为第一响应者 自动填充将自动地 将一个强密码填入 密码字段 到此为止 用户只需要 使用建议的密码 然后注册

    自动填充会负责存储密码

    在很多情况下 存储会自动进行 而不需要在你的 App 上出现采用要求 但是 为了确保你的 App 和自动强密码的兼容性 这里有些需要你 完成的步骤 其中很多步骤和 Chelsea 提到的 为了保证你的 App 与存储功能兼容 需要采取的步骤相同

    确保将你的用户名字段 标记为 UITextContentType username

    iOS 12 的新增内容是 确保将你的 新密码字段以及确认新密码字段 标记为 UITextContentType newPassword 如果你在使用 UITableView 来 显示你的注册表格 确保在用户名及密码字段处 使用唯一的 UITextField 实例 这很重要 因为一旦 自动填充探测到了用户名及 密码字段 它的预期是 能够在后期可靠地 读取他们的值 你们当中有些人在你的 App 中修改密码表格 自动强密码在 自动填充能够 在同一个屏幕上 探测到用户名字段和密码字段的情况下 与修改密码表格兼容 请注意 用户名字段为只读

    我们刚才讨论过的 对于注册表格的最佳做法 同样也适用于 修改密码表格 现在 让我们花点时间来 谈谈这些生成密码的格式

    生成的密码的长度有 20 个字节 他们包含了大写字母 数字

    连字符和小写字母

    这将使你的强密码 拥有大于71位的熵

    我们将它设计成很强 但是可以与大部分服务兼容的密码 这当然也能够 让你们的 App 定义他们自己的 自定义密码规则

    就像我之前提到的那样 大部分情况下你不需要这样做 因为自动强密码的 默认格式是有兼容性的 但是 如果你 App 的后端 需要单独的一套 不与自动强密码默认格式 兼容的规制 那么你可以自己 定义自己的规则

    如需这样做 请使用 iOS 12 里的新密码规则语言

    根据密码规则语言 创建一个 rulesDescriptor 使用 rulesDescriptor 创建一个 UITextInputPasswordRules 实例 然后将它传递给 UITextField 的密码规则属性 只要你这样做了 自动强密码将在这些规则的基础上 生成密码 我们也创造了一个新的 基于网页的密码规则的 验证工具

    用这个工具可确保 你制定的规则是正确的 并且能生成你所需要的那种 密码类型 我一会儿将多谈谈这个 现在 我们已经讲了 确保你的 App 与 自动强密码兼容的步骤 我想给大家 做一个演示 我是 Shiny App 的开发人员 我想确定 Shiny 是够可以与 iOS 12 里的自动强密码兼容的 所以 我需要做的第一件事是 使用 iOS 12 SDK 来运行 Shiny 然后试试看 所以在 Xcode 里我将点击运行 这里就是 Shiny 我将轻点创建帐户 轻点邮件 我没有看到任何建议用户名 当我轻点密码字段时 我也没有看到任何自动强密码 的建议出现 所以让我们回到 Xcode 然后 进一步研究它 第一件事是确保 你的 App 已经与域名相关联 在这里 我已经 确认 Shiny 与 域名进行了关联 事实上 今天早些时候 当我想登录 Shiny 的时候 我可以得到自动填充建议

    下一步 你需要看看 你需要仔细观察 你的注册视图控制器 我将点击邮件字段处

    在这里 在 Text Input Traits 下面 内容类型 我看到我正确地设置了用户名的 内容类型

    因为我希望 用户名的格式是 电子邮件地址 我同样正确地将键盘类型 设置为电子邮件 好的 这样很好 我们仔细看看密码字段 我能看到的内容类型 是非指定的 事实上 这应当被设为新密码 所以 在这里我将选择新密码

    同时因为这里是密码字段 我将把它标记为 安全文本输入

    好了 让我们再次尝试运行 Shiny 我来试一下

    好了 点击创建帐户 点击邮件 这里 现在我能看到我得到了 建议用户名 我将继续 通过使用建议用户名进行操作 我同样看到 自动强密码 所以 在大多数情况下 这样就够了 你已经做完要做的事了 让我们进行注册环节

    这个演示的目的 是要求 Shiny 密码中 包含有一个美元符号 这意味着我们需要 专门为自动强密码 指定自定义密码规则 事实上 最佳的方式是 使用新密码规则 验证工具 通过使用这个工具 我能够 明确正确的密码规则 同时 确保规则 将生成我希望的 那种类型的密码 所以 让我们直接进入 这是一个新的密码规则 验证工具你 可以从 developer.apple.com. 上找到 在这个演示里 我将允许 小写字母 数字 并且要求 至少一个美元符号 出现在我的密码里 在这一页的底部 我能看的一些密码的例子 已经生成 我同样也可以 下载其中一些密码 以便我需要 在我的 App 后端运行一些测试

    一旦我对 密码的格式已经满意 我有两个选项 如果我为 UIKit 做一个本地 App 那么我可以 为 UIKit 复制规则格式 或者我可以制作一个我能够 复制 HTML 格式化规则的网页

    在这个展示中 因为我们已经 为 UIKit 做了一个本地 App 我将继续复制 UIKit 版本

    因为我已经完成复制 我需要做的就是回到 Xcode

    选择密码 然后粘贴到 在密码规则的 文本字段里

    现在 让我们再次运行 Shiny

    好了 我将要点击创建帐户 点击它 我将使用 建议的用户名称继续操作 现在 密码 应当和我指定的规则兼容 让我们运行注册 就像这样 我注册进入了

    [ 掌声 ]谢谢大家

    我们刚刚看到 让你的 App 与自动强密码兼容 有多么容易

    谢谢你 Reza 就像 Reza 向你们展示的那样 这些是可以让 自动强密码在 你的 App 上运行的步骤

    确保将你的 App 与网页的域名相关联 就像填写和保存密码一样

    确保将你的字段标记为 用户名和 新密码内容类型 通过检查你在 注册时你的密码是否在 App 中存储 以确认注册行为被探测到与否

    做完这三件事 你们中的大多数人的工作就结束了 但是 如果你的服务与 Apple 的密码生成表格不兼容 那么你可能希望 在你的密码文本字段中 使用一些密码规则 以此来确保自动强密码 能够生成兼容的密码

    通过确保 自动强密码在 你的 App 上运行顺利 你将成功地鼓励用户 在你的 App 上使用 特殊强密码

    你们中有些人的 App 和服务 可能在使用 SMS 或者 将安全码通过 SMS 传给你的用户

    我将邀请 Harris 上台 介绍你能如何 将这些代码用到 你的 App 中 [ 掌声 ] 太好了 非常感谢 Chelsea 大家好 我的名字是 Harris 非常高兴能向你们 介绍安全码自动填充

    但是首先 这个部分需要 一点听众的参与 好的 你们中有多少人 曾经收到过 看起来像这样的短信息 请举手 好的 我想可以说 目前我们中的大多数都 常常需要与这些验证码打交道 好了 第二个问题 收到这样的短信之后 你们中多少人会 经历像这样的过程 你以为你已经 记住了安全码 你将它输入 你将最后两个数字输入反了 然后你需要 重新做一遍这个流程 让我们看看举手的人数

    好的 最后一个问题

    在经过这个过程之后 你们中多少人会 有这样的感受

    好的 让我来告诉你 你不需要这样 因为从 iOS 12 和 macOS Mojave 开始 我们引进了 安全码自动填充 一个全新的功能 可以带走所有 基于短信的二次验证流程带来的 痛苦和失望 现在 很重要的一点是注意到 安全码自动填充 不会改变 二次验证的安全性积分方式 它做的仅仅是移除 在计算机时代需要 自己动手填写安全码的羞辱感

    仅仅是这样而已 [ 掌声 ] 好了 从新的 iOS 以及 macOS 开始 你可以这样做而不是 训练你的记忆力

    只需轻点 快速输入条 你就成功进行了注册

    希望在此过程结束的时候 你们能有一点 这样的感受 好了 让我们来谈谈一些 技术细节

    和其他自动填充一起 你的 App 里的安全码自动填充 可以立即使用 这是在大多数情况下

    当然 你也可以做一点微小的工作 来确保安全码自动填充 每一次都能成功 我们在你标记你的字段之前 已经告知过你这些 在 iOS 12 里我们引进了一种 值为 oneTimeCode 的 新的 UITextContentType

    将你的安全码字段标记为 这个 安全码自动填充 将能每次都成功运行 另外 很重要的是 你需要允许 系统键盘 输入这些安全码 尽管你可能 需要避免 在视图图层构建编写 键盘 UI 或者在你的控制器中 设置自定义输入视图 因为如果你这样做了 你将使得 iOS 无法呈现 必须的 UI 而且 无法引入适合的活动来 代表你的用户将安全码填入 此外 你可能 妨碍了那些 需要使用 例如旁白功能的可访问性技术的人 所以 这里的底线是让 系统键盘为你做这些繁重的工作 然后安全码自动填充 将会每次都能 成功运行 另一个能 确保安全码自动填充 在你的服务中良好运作的步骤是 相应地设计你的信息

    iOS 和 macOS 使用 数据探测程序来推断 一个进来的信息携带了一个安全码 特别是 我们的探测程序是会 寻找像验证码或者 接近真正代码串的密码 你们可以在我身后的 幻灯片中看到一些 不同语言的消息

    现在 验证 你精心制作的信息否能 正确地触发 iOS 以及 macOS 的探试程序是非常容易的 你可以自己独立完成 直接给自己发送信息 然后 当你去到 消息副本你会看到 安全码被加了下划线 然后 轻点它 它向你提供了一个 复制验证码选项 你知道你做对了 安全码自动填充 在所有 iOS 和 macOS 受支持的地区 都可以使用 如果在跟随这些 最佳实践后你发现 你不能使安全码 在你的 App 或者网页上 正确地触发 请通过填写错误报告 让我们得知 我们将留意它们 好了 目前为止我们讨论了 在你的本地 iOS App 上 获得安全码自动填充 安全码自动填充同样 能在 iOS Safari 网页上工作 这很酷 如果你的用户 用他们 Mac 上的 Safari 登录你的服务 那么信息将 从他们的 iPhone 安全地 将进来的信息推送 到他们的 Mac 上 现在这意味着 他们可以通过 点击 Safari 上的完成 UI 来 填写安全码 你不再需要转换回 信息去将安全码复制出来 你懂的 或者穿越你的整个家来寻找你的 iPhone 这很酷[ 掌声 ] 为了在 Safari 上支持 安全码自动填充 我们引入了一个新的 input AutoComplete Attribute Value 一次性验证码

    事实上 今天你所有听到的 UI 文本内容类型 都有对应的网络平台 你可以用来 确保在网页上 自动填充体验可以无缝衔接 就如同在 你的 App 里一样

    你以前可能听说过这个 但是这次标记你的表格字段 自动填充将每次都能很好地运行 好了 这就是 一个对安全码自动填充的简介 一个在 iOS 12 以及 macOS Mojave 里全新增加的 将所有由信息二次验证流程带来的 痛苦和失望都带走的功能

    现在 使用我们今天介绍的 自动填充功能 与你的用户 建立关系的同时 保护他们的安全以及 尊重他们的隐私变得十分容易

    当然 你们中的有些人可能发现了 你可能需要支持 第三方供应商的联合身份验证 例如一些很流行的 社交网络

    为了你们中的一些听众 我们在 iOS 12 中引入了 一个新 API 去支持这项验证 我们将它叫做 ASWebAuthenticationSession 我想要为你们展示 它是如何工作的 现在 我回到了 Shiny App 这次我选择使用 example.com 进行登录 一个非常流行的 00:29:16.696 --> 00:29:17.906 A:middle 社交网站

    现在 当我点击按钮 引擎下的 App 调用 这个新的 ASWebAuthenticationSession API 现在 其中一个通过 ASWebAuthenticationSession 使 登录变得更快捷的方法是 与 Safari 分享划线的 Cookie Storage 现在当然 在我们做这些之前 iOS 需要用户的明确许可 通过许可 安全视图控制器将被提供给用户 然后引导用户 通过第三方的 联合身份验证流程

    这样 我已经在我的 iPhone 上的 Safari 登录进入 example.com 我现在唯一要做的就是轻点允许 让我们开始吧 只要点两下 我就已经 通过了第三方服务的 联合身份验证了

    所以 在以前你可能需要使用 其他 iOS 平台技术以 在你的 App 中使用 联合身份验证

    从 iOS 12 开始 ASWebAuthenticationSession 就是 执行这种验证的首选方法 就像我们之前已经提到的 ASWebAuthenticationSession 通过 与 Safari 分享 划线的 Cookie Storage 在明确的用户许可的基础上 现在 这意味着 这取决于 第三方的联合身份验证 如果你的用户已经在 他们设备的 Safari 上 登录了这个服务 他们可能根本 不需要看到登录表格

    如果他们确实需要看到登录表格 ASWebAuthenticationSession 将支持 密码自动填充和 安全码自动填充 以此来使 这项体验尽可能得减少痛苦

    对于你们开发人员而言 ASWebAuthenticationSession 提供了一个直接的 Block-based API 以使得采用过程非常简单

    让我们看看 现在 让我们看看 使用 ASWebAuthenticationSession 来 执行联合身份验证 有多容易

    首先你要 导入全新的 AuthenticationServices 框架 然后 你只需根据 第三方联合验证供应程序的描述 对 oauthURL 进行定义

    现在 这样做之后你将 创建一个 ASWebAuthenticationSession 对象 你在传递 oauthURL 然后一个 callback handler 将在身份验证会话的最后 介入进来 现在 很重要的是你要 保持住一个对 身份验证会话的强引用 当这个会话是 InFlight 时 这样做 当你选择 去取消一个正在发生的会话时 你就可以完成 最后 你要调用 Non-blocking 启动方法 这样做后 首先 iOS 将 请求与 Safari 共享 用户许可 一级你的会话中 Safari 所包含的划线 cookie storage 然后 用户将被展示 一个安全视图控制器 然后被指引着通过 身份验证流程

    当用户完成了 身份验证流程或者 如果他们取消身份验证会话 你的完成处理程序 介入 你可以控制这个结果 这就是在 iOS 12 里 使用 ASWebAuthenticationSession 执行联合身份验证 有多么简单 这只需要几行代码

    从 iOS 12 开始这个新的 API 就是执行 联合身份验证的首选 它代替了 SFAuthenticationSession 如果你发现你需要 在你的 App 里支持联合身份验证 我们强烈鼓励 你使用这个新的 API 讲到这里 我要将舞台 交还给 Chelsea 她将向你们介绍一些 我们基于 iOS 12 以及 macOS Mojave 搭建的非常酷的密码管理功能 非常感谢 [ 掌声 ]

    谢谢 Harris 我很激动要向你们介绍 iOS 12 以及 macOS Mojave 中 iCloud 钥匙串和密码管理器的 和密码管理器的新功能 你们可能在 昨天的年度咨文中已经了解一些了 截至目前 我们谈到的都是 如何帮助你的用户 登入 App 以及如何在你的 App 中创建帐户 但是有些情况下 用户会和你的 App 交互 当他们在 App 环境之外时 为了这些情况 我们已经 在 iCloud 钥匙串和密码管理器里 加入一些功能使得 管理和与帐户交互 变得轻而易举 如果一个用户需要查找密码 他们现在只需 询问 Siri 在认证后 他们将快速地 找到他们的密码 这样 他们就能读取 他们的密码并将其输入 另外在没有 iCloud 钥匙串的设备 有些用户可能需要为了一些服务 与实用工具共享帐户信息

    为了分享这个信息 用户可以 隔空投送密码给他们的联系人 在 iOS 12 里密码清单 UI 被 重新设计过 现在的它更具扫描性 交互也更令人愉悦

    macOS 里的密码清单 UI 也同样被重新设计过 它看起来很棒 另一个 iCloud 钥匙串密码管理器的功能 是提醒用户 是否他们在不同的网站 重复使用密码

    如果用户轻点了这些 密码中的一个 他们将被提供 在网页上修改他们 密码的选项 网页上的自动强密码 能够帮助他们升级 为该服务 使用特殊强密码 密码重复使用检查功能 也是基于 macOS 上的 Safari 密码清单创建的 最后 你的 tvOS App 现在可以提供从 附近的 iOS 设备进行自动填充的服务了

    [ 掌声 ] 如果想要了解更多 关于这个了不起又方便的功能的信息 请看观看 tvOS 新功能 会议 12 的自动填充部分

    总的来说 自动填充是一个 有力的平台功能 它能帮助用户与你的 App 帐户 进行交互 就像我们讨论的那样 我们今天谈到的功能 可能对你的 App 没有改变

    但是重要的是 你在你的 App 上 应用我们今天 谈到的建议 测试这些新功能 如果在应用了这些建议后 自动填充没有 你想象中运行得那样好 请填写错误报告 我们很乐意收到你的消息

    使用 Reza 在 他的演示中展示的验证工具 你可以访问列出的这个网址

    这里是一些你可能感兴趣的 相关会议 如果你是一个 密码管理器的开发人员 请看执行自动填充凭证 供应商扩展 如果你想学习更多 关于 App 密码自动填充的内容 请看 WWDC 2017 为 App 引入 密码自动填充的部分 如果你想与我们交流 或者对今天谈到的内容 有些疑问 请在会后到 Safari WebKit 和 密码自动填充实验室来 在本周晚些时候 我们还会有一些分享

    非常感谢大家的参与 祝大家有一个愉快的 WWDC 2018 [ 掌声 ]

Developer Footer

  • 视频
  • WWDC18
  • 自动式强密码和安全码自动填充
  • 打开菜单 关闭菜单
    • iOS
    • iPadOS
    • macOS
    • Apple tvOS
    • visionOS
    • watchOS
    打开菜单 关闭菜单
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    打开菜单 关闭菜单
    • 辅助功能
    • 配件
    • Apple 智能
    • App 扩展
    • App Store
    • 音频与视频 (英文)
    • 增强现实
    • 设计
    • 分发
    • 教育
    • 字体 (英文)
    • 游戏
    • 健康与健身
    • App 内购买项目
    • 本地化
    • 地图与位置
    • 机器学习与 AI
    • 开源资源 (英文)
    • 安全性
    • Safari 浏览器与网页 (英文)
    打开菜单 关闭菜单
    • 完整文档 (英文)
    • 部分主题文档 (简体中文)
    • 教程
    • 下载
    • 论坛 (英文)
    • 视频
    打开菜单 关闭菜单
    • 支持文档
    • 联系我们
    • 错误报告
    • 系统状态 (英文)
    打开菜单 关闭菜单
    • Apple 开发者
    • App Store Connect
    • 证书、标识符和描述文件 (英文)
    • 反馈助理
    打开菜单 关闭菜单
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program (英文)
    • Mini Apps Partner Program
    • News Partner Program (英文)
    • Video Partner Program (英文)
    • 安全赏金计划 (英文)
    • Security Research Device Program (英文)
    打开菜单 关闭菜单
    • 与 Apple 会面交流
    • Apple Developer Center
    • App Store 大奖 (英文)
    • Apple 设计大奖
    • Apple Developer Academies (英文)
    • WWDC
    阅读最近新闻。
    获取 Apple Developer App。
    版权所有 © 2026 Apple Inc. 保留所有权利。
    使用条款 隐私政策 协议和准则