Logto 是一个为现代应用和 SaaS 产品设计的 Auth0 替代方案。它提供 Cloud 和 开源 服务,帮助你快速启动身份和管理 (IAM) 系统。享受认证 (Authentication)、授权 (Authorization) 和多租户管理 一体化。
我们建议从 Logto Cloud 上的免费开发租户开始。这可以让你轻松探索所有功能。
在本文中,我们将介绍使用 iOS (Swift) 和 Logto 快速构建 Microsoft Entra ID OIDC enterprise SSO 登录体验(用户认证 (Authentication))的步骤。
先决条件
- 一个正在运行的 Logto 实例。查看 介绍页面 以开始。
- iOS (Swift) 的基本知识。
- 一个可用的 Microsoft Entra ID OIDC enterprise SSO 账户。
Create an application in Logto
Logto 基于 OpenID Connect (OIDC) 认证 (Authentication) 和 OAuth 2.0 授权 (Authorization)。它支持跨多个应用程序的联合身份管理,通常称为单点登录 (SSO)。
要创建你的 Native app 应用程序,只需按照以下步骤操作:
- 打开 Logto Console。在“开始使用”部分,点击“查看全部”链接以打开应用程序框架列表。或者,你可以导航到 Logto Console > Applications,然后点击“创建应用程序”按钮。
- 在打开的模态窗口中,点击“Native app”部分,或使用左侧的快速过滤复选框过滤所有可用的“Native app”框架。点击 "iOS (Swift)" 框架卡片以开始创建你的应用程序。
- 输入应用程序名称,例如“Bookstore”,然后点击“创建应用程序”。
🎉 太棒了!你刚刚在 Logto 中创建了你的第一个应用程序。你将看到一个祝贺页面,其中包含详细的集成指南。按照指南查看你的应用程序中的体验将会是什么样的。
Integrate iOS (Swift) SDK
添加 Logto SDK 作为依赖
使用以下 URL 将 Logto SDK 添加为 Swift Package Manager 中的依赖项。
https://github.com/logto-io/swift.git
自 Xcode 11 起,你可以 直接导入 Swift 包,无需任何额外工具。
由于一些技术问题,我们目前不支持 Carthage 和 CocoaPods。
Carthage
Carthage 需要一个 xcodeproj
文件来构建,但是 swift package generate-xcodeproj
会报告失败,因为我们使用了本机社交插件的二进制目标。我们会尝试寻找解决方法。
初始化 LogtoClient
通过使用 LogtoConfig
对象创建一个 LogtoClient
实例来初始化客户端。
import Logto
import LogtoClient
let config = try? LogtoConfig(
endpoint: "<your-logto-endpoint>", // 例如 http://localhost:3001
appId: "<your-app-id>"
)
let client = LogtoClient(useConfig: config)
默认情况下,我们将 ID 令牌 (ID Token) 和刷新令牌 (Refresh Token) 等凭据存储在 Keychain 中。因此,当用户返回时,不需要再次登录。
要关闭此行为,请将 usingPersistStorage
设置为 false
:
let config = try? LogtoConfig(
// ...
usingPersistStorage: false
)
登录
在我们深入细节之前,这里是终端用户体验的快速概述。登录过程可以简化如下:
- 你的应用调用登录方法。
- 用户被重定向到 Logto 登录页面。对于原生应用,将打开系统浏览器。
- 用户登录并被重定向回你的应用(配置为重定向 URI)。
关于基于重定向的登录
- 此认证 (Authentication) 过程遵循 OpenID Connect (OIDC) 协议,Logto 强制执行严格的安全措施以保护用户登录。
- 如果你有多个应用程序,可以使用相同的身份提供商 (IdP)(日志 (Logto))。一旦用户登录到一个应用程序,当用户访问另一个应用程序时,Logto 将自动完成登录过程。
要了解有关基于重定向的登录的原理和好处的更多信息,请参阅 Logto 登录体验解释。
配置重定向 URI
让我们切换到 Logto Console 的应用详情页面。添加一个重定向 URI io.logto://callback
并点击“保存更改”。
iOS SDK 中的重定向 URI 仅供内部使用。不需要 添加 自定义 URL 方案 ,除非连接器要求。
登录和登出
在调用 .signInWithBrowser(redirectUri:)
之前,请确保你已在管理控制台中正确配置了重定向 URI。
你可以使用 client.signInWithBrowser(redirectUri:)
来让用户登录,并使用 client.signOut()
来让用户登出。
例如,在 SwiftUI 应用中:
struct ContentView: View {
@State var isAuthenticated: Bool
init() {
isAuthenticated = client.isAuthenticated
}
var body: some View {
VStack {
if isAuthenticated {
Button("Sign Out") {
Task { [self] in
await client.signOut()
isAuthenticated = false
}
}
} else {
Button("Sign In") {
Task { [self] in
do {
try await client.signInWithBrowser(redirectUri: "${
props.redirectUris[0] ?? 'io.logto://callback'
}")
isAuthenticated = true
} catch let error as LogtoClientErrors.SignIn {
// error occured during sign in
} catch {
// other errors
}
}
}
}
}
}
}
检查点:测试你的应用程序
现在,你可以测试你的应用程序:
- 运行你的应用程序,你将看到登录按钮。
- 点击登录按钮,SDK 将初始化登录过程并将你重定向到 Logto 登录页面。
- 登录后,你将被重定向回你的应用程序,并看到登出按钮。
- 点击登出按钮以清除令牌存储并登出。
Add Microsoft Entra ID OIDC enterprise SSO connector
To simplify access management and gain enterprise-level safeguards for your big clients, connect with iOS (Swift) as a federated identity provider. The Logto enterprise SSO connector helps you establish this connection in minutes by allowing several parameter inputs.
To add an enterprise SSO connector, simply follow these steps:
- Navigate to Logto console > Enterprise SSO.
- Click "Add enterprise connector" button and choose your SSO provider type. Choose from prebuilt connectors for Microsoft Entra ID (Azure AD), Google Workspace, and Okta, or create a custom SSO connection using the standard OpenID Connect (OIDC) or SAML protocol.
- Provide a unique name (e.g., SSO sign-in for Acme Company).
- Configure the connection with your IdP in the "Connection" tab. Check the guides above for each connector types.
- Customize the SSO experience and enterprise’s email domain in the "Experience" tab. Users sign in with the SSO-enabled email domain will be redirected to SSO authentication.
- Save changes.
Set up Azure AD SSO 应用程序
步骤 1:创建 Microsoft EntraID OIDC 应用程序
-
前往 Microsoft Entra 管理中心 并以管理员身份登录。
-
浏览到 Identity > Applications > App registrations。
-
选择
New registration
。 -
输入应用程序名称,并为你的应用程序选择适当的账户类型。
-
选择
Web
作为应用程序平台。 -
从 Logto 的 SSO 设置页面复制并粘贴
redirect URI
。redirect URI
是用户在通过 Microsoft Entra ID 认证后被重定向的 URL。
- 点击
Register
创建应用程序。
步骤 2:在 Logto 配置 Microsoft Entra ID OIDC 单点登录 (SSO)
成功创建 Microsoft Entra OIDC 应用程序后,你需要将 IdP 配置提供给 Logto。在 Logto 控制台中导航到 Connection
选项卡,并填写以下配置:
- Client ID:由 Microsoft Entra 分配给你的 OIDC 应用程序的唯一标识符。Logto 使用此标识符在 OIDC 流程中识别和认证 (Authentication) 应用程序。你可以在应用程序概览页面找到它,标识为
Application (client) ID
。
- Client Secret:创建一个新的客户端密钥,并将其值复制到 Logto。此密钥用于认证 (Authentication) OIDC 应用程序并保护 Logto 与 IdP 之间的通信。
-
发行者 (Issuer):发行者 URL,是 IdP 的唯一标识符,指定可以找到 OIDC 身份提供商 (IdP) 的位置。它是 OIDC 配置的重要组成部分,因为它帮助 Logto 发现必要的端点。
Logto 不需要手动提供所有这些 OIDC 端点,而是自动获取所有必需的配置和 IdP 端点。这是通过利用你提供的发行者 URL 并调用 IdP 的发现端点来完成的。
要获取发行者 URL,你可以在应用程序概览页面的
Endpoints
部分找到它。找到
OpenID Connect metadata document
端点并复制 URL 不包括末尾路径.well-known/openid-configuration
。这是因为 Logto 在获取 OIDC 配置时会自动将.well-known/openid-configuration
附加到发行者 URL。
- 权限 (Scope):一个以空格分隔的字符串列表,定义 Logto 在 OIDC 认证 (Authentication) 过程中请求的所需权限或访问级别。scope 参数允许你指定 Logto 从 IdP 请求哪些信息和访问权限。
scope 参数是可选的。无论自定义 scope 设置如何,Logto 始终会向 IdP 发送 openid
、profile
和 email
权限 (Scopes)。
点击 Save
完成配置过程。
步骤 3:设置电子邮件域并启用 SSO 连接器
在连接器 体验 (Experience)
选项卡中提供你组织的电子邮件 域
。这将启用 SSO 连接器作为这些用户的认证 (Authentication) 方法。
在指定域中的电子邮件地址的用户将被专门限制为仅使用你的 SSO 连接器作为他们的唯一认证 (Authentication) 方法。
Save your configuration
仔细检查你是否在 Logto 连接器配置区域填写了必要的值。点击“保存并完成”(或“保存更改”),Microsoft Entra ID OIDC enterprise SSO 连接器现在应该可用了。
Enable Microsoft Entra ID OIDC enterprise SSO connector in Sign-in Experience
You don’t need to configure enterprise connectors individually, Logto simplifies SSO integration into your applications with just one click.
- Navigate to: Console > Sign-in experience > Sign-up and sign-in.
- Enable the "Enterprise SSO" toggle.
- Save changes.
Once enabled, a "Single Sign-On" button will appear on your sign-in page. Enterprise users with SSO-enabled email domains can access your services using their enterprise identity providers (IdPs).
To learn more about the SSO user experience, including SP-initiated SSO and IdP-initiated SSO, refer to User flows: Enterprise SSO.
Testing and Validation
返回到你的 iOS (Swift) 应用。你现在应该可以使用 Microsoft Entra ID OIDC enterprise SSO 登录了。享受吧!
Further readings
终端用户流程:Logto 提供开箱即用的认证 (Authentication) 流程,包括多因素认证 (MFA) 和企业单点登录 (SSO),以及强大的 API,用于灵活实现账户设置、安全验证和多租户体验。
授权 (Authorization):授权 (Authorization) 定义了用户在被认证 (Authentication) 后可以执行的操作或访问的资源。探索如何保护你的 API 以用于原生和单页应用程序,并实现基于角色的访问控制 (RBAC)。
组织 (Organizations):在多租户 SaaS 和 B2B 应用中特别有效,组织功能支持租户创建、成员管理、组织级 RBAC 和即时供应。
客户 IAM 系列:我们关于客户(或消费者)身份和访问管理的系列博客文章,从 101 到高级主题及更深入的内容。