从 v1 迁移?请参阅 迁移指南。
文档
- 快速入门 - 从头开始展示如何将 Auth0.swift 集成到 iOS / macOS 应用中。
- 示例应用 - 一个完整、可运行的 iOS / macOS 应用,您可以尝试。
- 示例 - 解释如何使用大多数功能。
- API 文档 - 从代码注释自动生成的文档,解释了所有可用的功能。
- 常见问题 - 答案是关于 Auth0.swift 的常见问题。
- Auth0 文档 - 探索我们的文档站点,了解有关 Auth0 的更多信息。
入门
要求
- iOS 13.0+ / macOS 11.0+ / tvOS 13.0+ / watchOS 7.0+
- Xcode 14.x
- Swift 5.7+
注意 检查支持策略,了解何时停止使用 Xcode、Swift 和平台版本将不会被视作破坏性变更。
安装
Swift 包管理器
在 Xcode 中打开以下菜单项目
文件 > 添加包...
在 搜索或输入包 URL 搜索框输入此 URL
https://github.com/auth0/Auth0.swift
然后,选择依赖规则并按 添加包。
CocoaPods
在您的 Podfile
中添加以下行
pod 'Auth0', '~> 2.5'
然后,运行 pod install
。
Carthage
将以下行添加到您的 Cartfile
github "auth0/Auth0.swift" ~> 2.5
然后,运行 carthage bootstrap --use-xcframeworks
.
配置 SDK
前往 Auth0 仪表板 创建一个新的 原生 应用。
Auth0.swift 需要Auth0应用的 客户端ID 和 域 以与Auth0通信。您可以在 Auth0 应用的设置页找到这些信息。如果您有 自定义域名,请使用自定义域名而不是设置页的值。
使用 Property List 配置客户端ID和域
在您的应用包中创建一个名为 Auth0.plist
的 plist
文件,内容如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>ClientId</key>
<string>YOUR_AUTH0_CLIENT_ID</string>
<key>Domain</key>
<string>YOUR_AUTH0_DOMAIN</string>
</dict>
</plist>
以编程方式配置客户端ID和域
对于 Web 身份验证
Auth0
.webAuth(clientId: "YOUR_AUTH0_CLIENT_ID", domain: "YOUR_AUTH0_DOMAIN")
// ...
对于身份验证 API 客户端
Auth0
.authentication(clientId: "YOUR_AUTH0_CLIENT_ID", domain: "YOUR_AUTH0_DOMAIN")
// ...
对于管理 API 客户端(用户)
Auth0
.users(token: credentials.accessToken, domain: "YOUR_AUTH0_DOMAIN")
// ...
配置Web身份验证(iOS / macOS)
配置回调和注销URL
回调和注销URL是由Auth0调用来重定向回您的应用的URL。Auth0在验证用户后将回调URL,在删除会话cookie后将注销URL。
由于回调和注销URL可能被篡改,您需要在Auth0应用设置页面中将您的URL添加到“允许的回调URL”和“允许的注销URL”字段中。这将启用Auth0识别这些URL为有效的。如果未设置回调和注销URL,用户将无法登录或注销应用,并会收到错误。
访问您的Auth0应用设置页面并添加相应的URL到“允许的回调URL”和“允许的注销URL”,根据您的应用平台进行操作。如果您有一个自定义域名,请用您的自定义域名替换设置页面中的值。
iOS
YOUR_BUNDLE_IDENTIFIER://YOUR_AUTH0_DOMAIN/ios/YOUR_BUNDLE_IDENTIFIER/callback
macOS
YOUR_BUNDLE_IDENTIFIER://YOUR_AUTH0_DOMAIN/macos/YOUR_BUNDLE_IDENTIFIER/callback
例如,如果您的iOS包标识符是com.example.MyApp
并且您的Auth0域是example.us.auth0.com
,则该值将是
com.example.MyApp://example.us.auth0.com/ios/com.example.MyApp/callback
注意请确保已将 令牌端点认证方法 设置 为
无
。
配置自定义URL方案
回到Xcode,进入您的应用程序目标设置中的 Info 选项卡。在 URL Types 部分,点击 + 按钮添加新条目。在那里,将 auth0
输入到 Identifier 字段,并将 $(PRODUCT_BUNDLE_IDENTIFIER)
输入到 URL Schemes 字段。
这将注册您的束标识符作为自定义URL方案,以便回调和登出URL可以访问您的应用程序。
Web认证登录(iOS / macOS)
在您想要显示登录页面的文件中导入 Auth0
模块。
import Auth0
然后,在您的 登录 按钮的动作中呈现 通用登录 页面。
Auth0
.webAuth()
.start { result in
switch result {
case .success(let credentials):
print("Obtained credentials: \(credentials)")
case .failure(let error):
print("Failed with: \(error)")
}
}
使用 async/await
do {
let credentials = try await Auth0.webAuth().start()
print("Obtained credentials: \(credentials)")
} catch {
print("Failed with: \(error)")
}
使用 Combine
Auth0
.webAuth()
.start()
.sink(receiveCompletion: { completion in
if case .failure(let error) = completion {
print("Failed with: \(error)")
}
}, receiveValue: { credentials in
print("Obtained credentials: \(credentials)")
})
.store(in: &cancellables)
Web认证登出(iOS / macOS)
注销用户涉及清除通用登录会话cookie,然后从您的应用程序中删除用户的凭证。
在您的 登出 按钮的操作中调用 clearSession()
方法。一旦会话cookie被清除,请删除用户凭证。
Auth0
.webAuth()
.clearSession { result in
switch result {
case .success:
print("Session cookie cleared")
// Delete credentials
case .failure(let error):
print("Failed with: \(error)")
}
}
使用 async/await
do {
try await Auth0.webAuth().clearSession()
print("Session cookie cleared")
// Delete credentials
} catch {
print("Failed with: \(error)")
}
使用 Combine
Auth0
.webAuth()
.clearSession()
.sink(receiveCompletion: { completion in
switch completion {
case .finished:
print("Session cookie cleared")
// Delete credentials
case .failure(let error):
print("Failed with: \(error)")
}
}, receiveValue: {})
.store(in: &cancellables)
SSO 警报框(iOS / macOS)
查看 常见问题解答 获取有关使用 Web Auth 时默认弹出的警报框的更多信息。
注意 另请参阅 此博客文章 了解 iOS 上单点登录(SSO)的详细概述。
下一步操作
了解Examples
- 存储凭据 - 在 Keychain 中安全地存储用户的凭据。
- 检查存储的凭据 - 检查应用启动时用户是否已登录。
- 检索存储的凭据 - 从 Keychain 中检索用户的凭据,如果它们已过期,则自动更新它们的密码。
- 清除存储的凭据 - 删除用户的凭据以完成注销过程。
- 检索用户信息 - 从
/userinfo
端点获取最新的用户信息。
支持策略
此策略定义了在 Auth0.swift 中对 Xcode、Swift 和平台(iOS、macOS、tvOS 和 watchOS)版本的 Xcode 支持。
Xcode
仅支持目前可用于提交应用到App Store的Xcode版本。一旦某个Xcode版本不再受支持,从Auth0.swift中去除它将不会被视为重大更改,并且将在一个次要版本中完成。
Swift
最低支持的Swift小版本是和最老受支持的Xcode版本一起发布的。一旦某个Swift小版本不再受支持,从Auth0.swift中去除它将不会被视为重大更改,并且将在一个次要版本中完成。
平台
仅支持最近4个主要平台版本,从
- iOS 12
- macOS 10.15
- macCatalyst 13
- tvOS 12
- watchOS 6.2
一旦某个平台版本不再受支持,从Auth0.swift中去除它将不会被视为重大更改,并且将在一个次要版本中完成。例如,当iOS 17发布时,iOS 13将不再受支持,Auth0.swift将在一个次要版本中去除它。
在macOS的情况下,无论实际版本号如何,每年的命名版本都被视为本政策中的主要平台版本。
反馈
贡献
我们感谢对本仓库的反馈和贡献!在您开始之前,请查看以下内容
提出问题
要提供反馈或报告错误,请在我们的问题跟踪器上提出问题。
漏洞报告
请勿在公共 GitHub 问题跟踪器上报告安全漏洞。有关安全问题的披露程序,请参阅负责任披露计划。
Auth0 是一个易于实施、可定制的身份验证和授权平台。要了解更多信息,请访问为什么选择 Auth0?
本项目采用 MIT 许可协议。有关更多信息,请参阅LICENSE文件。