记录一些官方文档的翻译,里面是一些配置密码自动填充时官方给出的所有方法,后续会重新整理一份在实际项目上的应用
认证服务
为密码管理器应用程序定义新的扩展点,以便与密码自动填充集成。
概观
使用身份验证服务框架将密码管理器应用程序与密码自动填充集成。您还可以使用所有用户在应用程序和Safari之间共享持久性cookie和网站数据,以获得单点登录(SSO)体验。ASWebAuthenticationSession
要集成您的密码管理器应用:
- 通过在Xcode中为项目添加Credential Provider Extension目标来配置您的应用程序。
- 支持在用户使用对象从QuickType栏打开扩展程序时向用户显示其凭据列表。ASCredentialServiceIdentifier
- 通过在扩展中使用,指定要在QuickType栏中显示的凭据。ASCredentialIdentityStore
- 当用户在其“设置”中启用密码管理器时,请指定扩展程序的UI。
添加凭据提供程序扩展
- class ASCredentialProviderExtensionContext 表示凭据提供程序扩展上下文的类。
- class ASCredentialProviderViewController 一个类,它提供用于创建凭据提供程序扩展的标准接口。
实施凭证清单
- class ASCredentialServiceIdentifier
表示凭证服务标识符的类。
更新凭据标识存储
- class ASCredentialIdentityStore 表示凭证标识存储的类。
- class ASCredentialIdentityStoreState 表示凭证标识存储状态的类。
- struct ASCredentialIdentityStoreError 凭据标识存储错误。
- let ASCredentialIdentityStoreErrorDomain: String
证书
- class ASPasswordCredential 表示密码凭据的类。
- class ASPasswordCredentialIdentity 表示密码凭据标识的类。
与Safari共享数据
- class ASWebAuthenticationSession
管理在Safari和应用程序之间共享一次性登录的类,也可用于自动登录关联的应用程序。 - let ASWebAuthenticationSessionErrorDomain: String Web身份验证会话的错误域。
- struct ASWebAuthenticationSessionError
扩展错误
- struct ASExtensionError 扩展错误。
- let ASExtensionErrorDomain: String 扩展错误的错误域。
权益
- 自动填充凭证提供程序权利
一个布尔值,指示应用程序是否可以在用户权限的情况下为Safari和其他应用程序中的自动填充提供用户名和密码。
密钥: com.apple.developer.authentication-services.autofill-credential-provider
ASWeb 认证会话
管理在Safari和应用程序之间共享一次性登录的类,也可用于自动登录关联的应用程序。
一个对象可用于用户与网络服务进行身份验证,即使Web服务是由第三方运行。使用户能够控制他们是否想要使用来自Safari的现有登录会话。ASWebAuthenticationSessionASWebAuthenticationSession
注意
除会话cookie外,所有cookie都可以与Safari共享。
该应用程序提供指向身份验证网页的URL。该页面将加载到安全的视图控制器中。用户可以从网页上对自己进行身份验证并授予对应用的访问权限。完成后,该服务将发送带有身份验证令牌的回调URL,此URL将通过以下方式传递给应用程序。ASWebAuthenticationSession.CompletionHandler
回调URL通常具有自定义URL方案。要使应用程序接收回调URL,它需要在其中注册自定义URL方案,或者将方案设置为初始化程序中的参数。Info.plistinit(url:callbackURLScheme:completionHandler:)
如果用户已经通过Safari或其他应用程序登录了Web服务,则可以共享现有的登录信息。将提供警报以获得用户同意共享其现有登录信息。如果用户取消警报,会话将被取消,并将使用错误代码调用完成处理程序。ASWebAuthenticationSessionASWebAuthenticationSessionError.Code.canceledLogin
如果用户在显示Web服务的登录网页时点击取消,则会话将被取消,并且将使用错误代码调用完成处理程序。ASWebAuthenticationSessionError.Code.canceledLogin
该应用可以通过呼叫取消会话cancel()。这也将关闭显示Web服务登录页面的视图控制器。