open_lark/service/authentication/mod.rs
1//! 身份认证(Authentication)服务
2//!
3//! 提供飞书开放平台的身份认证和授权功能,支持多种认证方式和令牌管理。
4//! 这是所有API调用的基础服务,负责处理应用和用户的身份验证。
5//!
6//! # 核心功能
7//!
8//! ## 应用认证
9//! - 🔑 App Access Token 获取和刷新
10//! - 🏢 Tenant Access Token 管理
11//! - 🔄 令牌自动刷新和缓存
12//! - ⏰ 令牌有效期管理
13//!
14//! ## 用户认证
15//! - 👤 User Access Token 获取
16//! - 🔐 OAuth 2.0 授权流程
17//! - 🎫 授权码换取访问令牌
18//! - 🔄 用户令牌刷新机制
19//!
20//! ## 身份验证
21//! - ✅ 令牌有效性验证
22//! - 👥 用户身份信息获取
23//! - 🔍 权限范围检查
24//! - 🛡️ 安全策略验证
25//!
26//! # 令牌类型说明
27//!
28//! ## App Access Token
29//! 应用级别的访问令牌,用于访问不需要用户授权的API接口。
30//! 适用于服务端应用的后台操作。
31//!
32//! ## Tenant Access Token
33//! 企业级别的访问令牌,用于访问特定企业的资源和数据。
34//! 需要企业管理员的授权和配置。
35//!
36//! ## User Access Token
37//! 用户级别的访问令牌,用于访问用户个人数据和执行用户操作。
38//! 需要用户明确授权和同意。
39//!
40//! # 使用示例
41//!
42//! ```no_run
43//! use open_lark::prelude::*;
44//!
45//! let client = LarkClient::builder("app_id", "app_secret")
46//! .with_app_type(AppType::SelfBuild)
47//! .build();
48//!
49//! // 认证服务通过核心配置处理,无需直接访问
50//!
51//! // 获取App Access Token
52//! // let app_token_request = GetAppAccessTokenRequest::builder()
53//! // .app_id("app_id")
54//! // .app_secret("app_secret")
55//! // .build();
56//! // let token = auth.v1.app_access_token.get(app_token_request, None).await?;
57//!
58//! // 获取用户访问令牌
59//! // let user_token_request = GetUserAccessTokenRequest::builder()
60//! // .grant_type("authorization_code")
61//! // .code("authorization_code")
62//! // .build();
63//! // let user_token = auth.v1.user_access_token.get(user_token_request, None).await?;
64//! ```
65//!
66//! # 安全注意事项
67//!
68//! - 🔒 妥善保管应用凭据(App ID 和 App Secret)
69//! - 🕐 及时刷新即将过期的令牌
70//! - 🛡️ 使用HTTPS传输敏感信息
71//! - 📝 记录和监控认证相关操作
72//! - 🚫 避免在客户端暴露敏感凭据
73//!
74//! # 错误处理
75//!
76//! 认证失败时会返回相应的错误信息:
77//! - 无效的应用凭据
78//! - 令牌已过期
79//! - 权限不足
80//! - 网络连接问题
81
82use std::sync::Arc;
83
84/// 身份认证服务 v1 版本
85pub mod v1;
86
87/// 身份认证服务
88///
89/// 飞书开放平台身份认证和授权的统一管理入口。提供应用认证、用户认证、
90/// 令牌管理等核心身份验证功能。
91///
92/// # 服务架构
93///
94/// - **v1**: 认证服务v1版本API,提供完整的认证功能集
95///
96/// # 核心特性
97///
98/// - 🔐 多种认证方式支持
99/// - 🔄 自动令牌管理和刷新
100/// - 🛡️ 企业级安全保障
101/// - ⚡ 高性能令牌缓存
102/// - 🎯 精细化权限控制
103///
104/// # 适用场景
105///
106/// - 服务端应用身份认证
107/// - 用户授权和登录
108/// - API访问权限管理
109/// - 企业应用集成
110/// - 第三方系统对接
111///
112/// # 最佳实践
113///
114/// - 定期轮换应用凭据
115/// - 实施令牌最小权限原则
116/// - 建立完善的访问日志
117/// - 监控异常认证行为
118/// - 遵循OAuth 2.0最佳实践
119pub struct AuthenService {
120 /// v1版本认证API服务
121 pub v1: v1::V1,
122}
123
124impl AuthenService {
125 /// 创建新的身份认证服务实例
126 ///
127 /// # 参数
128 /// - `config`: 客户端配置,包含应用凭据和认证设置
129 ///
130 /// # 返回值
131 /// 配置完成的身份认证服务实例
132 pub fn new(config: Arc<crate::core::config::Config>) -> Self {
133 Self {
134 v1: v1::V1::new((*config).clone()),
135 }
136 }
137}