Auth0 2.9.0-beta.0

Auth0 2.9.0-beta.0

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最后发布2024年7月
SPM支持 SPM

Hernan ZalazarMartin WalshSteve HobbsRita ZerrizuelaAdam McgrathSai Venkat Desu 维护。



 
依赖于
SimpleKeychain= 1.2.0beta.0
JWTDecode= 3.2.0beta.0
 

Auth0 2.9.0-beta.0

  • Auth0 和 Rita Zerrizuela

Auth0.swift

Version CircleCI Coverage Status License

📚 文档🚀 入门📃 支持政策💬 反馈

从 v1 迁移?请参阅 迁移指南

文档

入门

要求

  • 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.plistplist 文件,内容如下

<?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-scheme

这将注册您的束标识符作为自定义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)

sso-alert

查看 常见问题解答 获取有关使用 Web Auth 时默认弹出的警报框的更多信息。

注意 另请参阅 此博客文章 了解 iOS 上单点登录(SSO)的详细概述。

下一步操作

了解Examples 中的大多数功能。

支持策略

此策略定义了在 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 Logo

Auth0 是一个易于实施、可定制的身份验证和授权平台。要了解更多信息,请访问为什么选择 Auth0?

本项目采用 MIT 许可协议。有关更多信息,请参阅LICENSE文件。