Flutter信任与安全插件trustsdk的使用

Flutter信任与安全插件trustsdk的使用

TrustSDK

此插件包由 Trust Technologies 开发,允许集成者访问每个原生 SDK 的不同功能(TrustAudit、TrustDeviceInfo、TrustBioidentify 和 TrustSSO)。


安装

  1. pubspec.yaml 文件的 dependencies 部分添加 trustsdk
dependencies:
  flutter:
    sdk: flutter
  trustsdk: ^0.0.3
  1. 运行以下命令以安装依赖项:
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

1 回复

更多关于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");
}
回到顶部