Flutter信任与安全插件trustsdk的使用
Flutter信任与安全插件trustsdk的使用
TrustSDK
此插件包由 Trust Technologies 开发,允许集成者访问每个原生 SDK 的不同功能(TrustAudit、TrustDeviceInfo、TrustBioidentify 和 TrustSSO)。
安装
- 在
pubspec.yaml
文件的dependencies
部分添加trustsdk
。
dependencies:
flutter:
sdk: flutter
trustsdk: ^0.0.3
- 运行以下命令以安装依赖项:
flutter pub get
可用类
TrustTransaction
该类提供了多种方法用于获取、更新和创建交易记录。
获取特定用户的现有交易记录
- 参数:
userId
- 用于搜索交易的值
Future<dynamic> fetchTransactionsByUser(String userId)
获取特定公司的现有交易记录
- 参数:
companyId
- 用于搜索交易的值
Future<dynamic> fetchTransactionsByCompany(String companyId)
更新现有交易记录
- 参数:
active
,completed
,authorizationMethod
- 分别表示要设置的交易状态和授权方式
Future<dynamic> updateTransaction(String transactionUuid)
创建新的交易记录
- 参数:
transactionId
,userId
,companyId
,authorizationMethod
- 分别表示交易 ID、用户 ID、公司 ID 和授权方式
Future<dynamic> createTransaction(int transactionUuid, userId, companyId, String authorizationMethod)
TrustIDP
该类提供了多种方法用于呈现登录界面并请求授权。
请求授权
- 参数:
scheme
,baseUrl
,authPath
,scopes
,state
,responseType
,acrValues
,redirectUri
,clientId
,clientSecret
,grantType
- 分别表示授权 URL 的方案、基础 URL、路径、作用域、状态等信息
Future<void> requestAuthorization(
String scheme,
baseUrl,
authPath,
scopes,
state,
responseType,
acrValues,
redirectUri,
clientId,
clientSecret,
grantType,
)
通过代码交换获取 Access Token
- 参数:
code
- 用于获取 Access Token 的代码
Future<dynamic> tokenExchange(String code)
TrustFIDO2
该类提供了注册和验证用户凭据的方法。
注册新用户凭据
- 参数:
sourceService
,username
,userId
,companyId
,type
- 分别表示服务来源、用户名、用户 ID、公司 ID 和认证器类型
Future<dynamic> signUpRequest(String sourceService, username, userId, companyId, type)
验证登录凭据
- 参数:
userId
,companyId
,sourceService
- 分别表示用户 ID、公司 ID 和服务来源
Future<dynamic> signInRequest(String userId, companyId, sourceService)
TrustValidation
该类提供了生成审计记录和验证代码的方法。
生成交易代码
- 参数:
transactionUuid
,userId
- 分别表示交易 UUID 和用户 ID
Future<dynamic> getCode(String transactionUuid, int userId)
验证代码
- 参数:
transactionUuid
,otp
- 分别表示交易 UUID 和 OTP 值
Future<dynamic> validateCode(String transactionUuid, int otp)
TrustAudit
该类提供了生成和管理审计记录的方法。
生成新的审计记录
- 参数:
trustID
,connectionType
,connectionName
,type
,result
,method
,operation
,userDni
,userEmail
,userPhone
,userFirstName
,userLastName
- 分别表示信任 ID、连接类型、连接名称等信息
Future<dynamic> createAudit(
String trustID,
connectionType,
connectionName,
type,
result,
method,
operation,
userDni,
userEmail,
userPhone,
userFirstName,
userLastName,
)
设置当前环境
- 参数:
currentEnvironment
- 表示库的当前环境
Future<void> setCurrentEnvironment(String currentEnvironment)
设置服务名称和访问组
- 参数:
serviceName
,accessGroup
- 分别表示服务名称和访问组
Future<void> setServiceNameAndAccessGroup(String accessGroup, serviceName)
请求客户端凭证
- 参数:
clientID
,clientSecret
- 分别表示客户端 ID 和客户端密钥
Future<void> createClientCredentials(String clientID, clientSecret)
TrustDeviceInfo
该类提供了设备信息相关的功能。
设置访问名称和访问组
- 参数:
serviceName
,accessGroup
- 分别表示服务名称和访问组
Future<void> setServiceNameAndAccessGroup(String serviceName, accessGroup)
设置当前环境
Future<void> setCurrentEnvironment(String currentEnvironment)
设置权限
- 参数:
readPhoneState
,readExternalStorage
,writeExternalStorage
,accessCoarseLocation
,accessFineLocation
- 分别表示是否允许读取电话状态、外部存储等权限
Future<void> setPermissions(
Bool readPhoneState,
readExternalStorage,
writeExternalStorage,
accessCoarseLocation,
accessFineLocation,
)
获取当前环境
Future<String> getCurrentEnvironment()
创建客户端凭证
- 参数:
clientID
,clientSecret
- 分别表示客户端 ID 和客户端密钥
Future<dynamic> createClientCredentials(String clientID, clientSecret)
注册 Firebase Token
- 参数:
firebasetoken
,bundleID
- 分别表示 Firebase Token 和 Bundle ID
Future<dynamic> registerFirebaseToken(String firebasetoken, bundleID)
设置应用状态
- 参数:
dni
- 当前用户的身份证号
Future<void> setAppState(String dni)
获取 TrustID
Future<String> getTrtustID()
发送设备信息
- 参数:
dni
,name
,lastname
,email
,phone
,appleUserId
- 分别表示身份证号、名字、姓氏、邮箱、电话和 Apple 用户 ID
Future<dynamic> sendDeviceInfo(
String dni,
name,
lastname,
email,
phone,
appleUserId,
)
TrustBioidentify
该类提供了生物识别相关的功能。
// TrustBioidentify
错误处理
在处理错误时,可以参考以下示例:
// 调用 tokenExchange 方法,并等待响应,可能是 ClientCredentials 或 TrustError 类型
TrustSSO.tokenExchange(String userId, companyId, sourceService).then((response) =>
// 检查响应是否符合 ClientCredentials 或 TrustError 类型
response is ClientCredentials ? print("${response} is ClientCredentials") : print("${response} is TrustError")
)
示例代码
以下是一个完整的示例代码,展示了如何使用 trustsdk
插件。
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:trustsdk/TrustSSO/TrustFIDO2.dart';
import 'package:trustsdk/TrustSSO/TrustValidation.dart';
import 'package:trustsdk/TrustSSO/TrustIDP.dart';
import 'package:trustsdk/TrustSSO/TrustTransaction.dart';
import 'package:trustsdk/TrustAudit/TrustAudit.dart';
import 'package:trustsdk/TrustBioidentify/TrustBioidentify.dart';
import 'package:trustsdk/TrustDeviceInfo/TrustDeviceInfo.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
debugShowCheckedModeBanner: false,
home: const MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({Key? key}) : super(key: key);
[@override](/user/override)
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
[@override](/user/override)
Widget build(BuildContext context) {
final ButtonStyle style = ElevatedButton.styleFrom(
textStyle: const TextStyle(fontSize: 20),
);
return Scaffold(
appBar: AppBar(
title: const Text("TrustClientApp"),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
style: style,
onPressed: () {
TrustIDP.requestAuthorization(
"https://",
"atenea.trust.lat",
"/oauth/authorize",
"openid name dni phone_number last_name company_uid email",
"12345678",
"code",
"autoidentify",
"com.trust.trustExampleApp://main",
"a2c0cc81-0249-4d42-ba25-d8d3dfbc40f7",
"66568f22-c40f-4707-beb4-03cdd1daf0b4",
"authorization_code",
);
},
child: const Text('Authenticate'),
),
ElevatedButton(
style: style,
onPressed: () {
TrustIDP.tokenExchange("1234").then((response) =>
response is ClientCredentials
? print("response is clientCredentials}")
: print("response is trustError"));
},
child: const Text('Get Token'),
),
ElevatedButton(
style: style,
onPressed: () {
TrustFIDO2.signUpRequest(
"ATENEA", "bigmouthstrks", "09931", "1", "");
},
child: const Text('FIDO2 SignUp'),
),
ElevatedButton(
style: style,
onPressed: () {
TrustFIDO2.signInRequest("09931", "1", "ATENEA");
},
child: const Text('FIDO2 SignIn'),
),
ElevatedButton(
style: style,
onPressed: () {
TrustTransaction.fetchTransactionsByCompany('1').then((value) {
print(value);
});
},
child: const Text('Fetch transactions by company'),
),
ElevatedButton(
style: style,
onPressed: () {
TrustTransaction.fetchTransactionsByUser('2032').then((value) {
print(value);
});
},
child: const Text('Fetch transactions by company'),
),
],
),
),
);
}
}
更多关于Flutter信任与安全插件trustsdk的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter信任与安全插件trustsdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
TrustSDK
是一个用于增强 Flutter 应用程序安全性的插件,通常用于处理与信任和安全相关的功能,如设备认证、安全存储、加密等。使用 TrustSDK
可以帮助开发者更好地保护用户数据和应用程序的安全性。
以下是如何在 Flutter 项目中使用 TrustSDK
的基本步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 trustsdk
插件的依赖。
dependencies:
flutter:
sdk: flutter
trustsdk: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 初始化 TrustSDK
在你的 Flutter 应用程序中,通常需要在 main.dart
文件中初始化 TrustSDK
。
import 'package:flutter/material.dart';
import 'package:trustsdk/trustsdk.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化 TrustSDK
await TrustSDK.initialize();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'TrustSDK Example',
home: HomeScreen(),
);
}
}
3. 使用 TrustSDK 功能
TrustSDK
提供了多种功能,如设备认证、安全存储等。以下是一些常见的使用示例:
设备认证
import 'package:trustsdk/trustsdk.dart';
Future<void> authenticate() async {
bool isAuthenticated = await TrustSDK.authenticate();
if (isAuthenticated) {
print("Authentication successful!");
} else {
print("Authentication failed.");
}
}
安全存储
import 'package:trustsdk/trustsdk.dart';
Future<void> storeData() async {
await TrustSDK.storeData(key: 'myKey', value: 'mySecretValue');
}
Future<String?> retrieveData() async {
String? value = await TrustSDK.retrieveData(key: 'myKey');
return value;
}
4. 处理错误
在使用 TrustSDK
时,可能会遇到各种错误。你可以使用 try-catch
块来捕获和处理这些错误。
try {
await TrustSDK.authenticate();
} catch (e) {
print("An error occurred: $e");
}