Ping Orchestration iOS SDK (DaVinci) 技能用于在 iOS 应用中加入基于 PingOne DaVinci 的认证流程。它采用 SwiftUI、Combine 和 MVVM 模式,通过 Ping Orchestration iOS SDK 的 DaVinci 模块对接 PingOne DaVinci 编排服务器。
用途: 该技能可在 iOS 应用中搭建完整的认证流程。适用于从零构建一个带主题的示例应用,也适用于把认证集成到已有的 SwiftUI 应用中。
主要能力:
- 配置 DaVinci 实例(OIDC 模块,含 discovery 端点、clientId、scopes、redirectUri)。
- 使用 @Published 属性与 @MainActor 进行 MVVM 状态管理。
- 用 SwiftUI 视图动态渲染 collector 节点。
- 处理核心 collector:文本、密码、提交、流程、标签、单选、多选、电话号码、设备注册、设备认证。
- 处理可选 collector:社交登录(IdpCollector,需 PingExternalIdP)、FIDO2/Passkey(需 PingFido)、PingOne Protect(需 PingProtect)。
- 通过 ValidatedCollector 协议与 ValidationViewModel 进行表单校验。
- 处理 ContinueNode、SuccessNode、FailureNode、ErrorNode 节点,ErrorNode 可通过 continueNode() 重新渲染之前的表单。
- 会话管理与 OIDC token 交换,支持登出。
使用方式:
- 通过 Swift Package Manager 添加 Ping iOS SDK:包地址为 https://github.com/ForgeRock/ping-ios-sdk,版本 from "1.3.0"。必需产品包括 PingDavinci、PingOidc、PingOrchestrate;可选产品包括 PingExternalIdP、PingExternalIdPGoogle、PingExternalIdPFacebook、PingExternalIdPApple、PingProtect、PingFido、PingBrowser。
- 在 Info.plist 中注册 OAuth 2.0 重定向所需的 URL scheme,例如 myapp。
- 生成任何文件前先收集必需参数:clientId、discoveryEndpoint、scopes(默认 openid email profile)、redirectUri(默认 myapp://callback)。校验规则:discoveryEndpoint 必须以 /.well-known/openid-configuration 结尾;clientId 非空;redirectUri 需符合 <scheme>://<path> 且 scheme 与 Info.plist 一致;scopes 若不含 openid 应自动补上并提示。
- 依次创建 DavinciViewModel.swift(配置 DaVinci 实例)、ValidationViewModel.swift、DavinciView.swift、ContinueNodeView.swift 以及各 collector 的 SwiftUI 视图。
- 在 @main 中用 @StateObject 创建 ViewModel 并接入 DavinciView。
- 可用脚手架脚本 scripts/scaffold_auth.sh 复制模板,例如:./scripts/scaffold_auth.sh --target-dir MyApp/Sources。
适用场景:
- 构建完整的示例 iOS 应用,演示 Ping Orchestration iOS SDK 与 PingOne DaVinci 的集成,包含导航、样式化视图、用户信息、access token 展示;需生成 Xcode 项目结构、Package.swift 依赖、Info.plist 条目与所有视图组件。
- 在已有 SwiftUI 应用中集成 SDK,仅生成 SDK 集成文件(DavinciViewModel、collector 视图、DavinciView、工具视图)并指导接入现有导航与布局。
限制与注意事项:
- 最低 iOS 版本 16.0,建议使用最新版 Xcode。
- DaVinci 使用 PingOne 作为编排服务器(非 PingAM/AIC),使用 Collectors 而非 Callbacks,使用 DaVinci 类而非 Journey 类,API 表面不同。
- 常见错误包括 URL scheme 不匹配、缺少 openid scope、未处理某 collector 类型、误用 Journey 代替 DaVinci、存在 Submittable 时未隐藏默认 Next 按钮、未通过 .environmentObject() 注入 ValidationViewModel、未填充 collector 值就调用 node.next()、未处理 ErrorNode 的 continueNode()。
- 收费、价格、具体效果等信息暂未提供。
相关技能:ping-quickstart(平台检测与 Ping Identity 入门)、ping-orchestration-ios-journey-sdk(使用 Journey 模块的 iOS 认证,用于 PingOne AIC/PingAM)。