Flutter身份验证插件okta_identity_dart_auth_sdk的使用

okta_identity_dart_auth_sdk概述

okta_identity_dart_auth_sdk 提供了一组强大的工具,用于在 Dart 或 Flutter 项目中执行身份验证流程。这是对 Okta 身份验证的 Dart 实现。

特性

  • 用户管理: 使用全面的用户管理功能无缝管理用户帐户。
  • 自定义令牌生成: 通过生成自定义令牌将 Okta 身份验证集成到您的后端服务中。
  • 生成电子邮件操作链接: 通过创建并发送电子邮件操作链接(如电子邮件验证、密码重置等)进行身份验证。
  • ID 令牌验证: 安全地验证 ID 令牌,以确保应用程序用户已通过身份验证并被授权使用应用程序。
  • 管理 SAML/OIDC 提供商配置: 管理和配置 SAML 和 OIDC 提供商以支持身份验证和简单的单点登录解决方案。

开始使用okta_identity_dart_auth_sdk

如果要在 Flutter 项目中实现 Okta 身份验证,请按照以下说明设置身份验证 SDK。

  1. 确保系统中安装了 Flutter 或 Dart (3.4.x) SDK。
  2. 设置 Okta 项目和服务帐户。
  3. 设置 Flutter 项目。

安装

对于 Flutter,使用以下命令:

flutter pub add okta_identity_dart_auth_sdk

也可以手动编辑 pubspec.yaml 文件:

dependencies:
  okta_identity_dart_auth_sdk: ^0.0.1-pre+11

然后运行以下命令完成安装:

flutter pub get

注意: SDK 版本可能会有所不同。

使用示例

以下是一个完整的示例,展示如何在 Flutter 应用程序中使用 okta_identity_dart_auth_sdk。

示例代码

import 'dart:io';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:okta_identity_dart_auth_sdk/okta_identity_dart_auth_sdk.dart';
import 'package:flutter/services.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  try {
    if (kIsWeb) {
      // 初始化 Web 环境
      debugPrint('Initializing Okta for Web...');
      oktaApp.initializeAppWithEnvironmentVariables(
        clientId: 'YOUR-CLIENT-ID',
        issuer: 'YOUR-ISSUER',
        redirectUri: 'http://localhost:8080/callback',
      );
      debugPrint('Okta initialized for Web.');
    } else {
      if (Platform.isAndroid || Platform.isIOS) {
        debugPrint('Initializing Okta for Mobile...');

        // 加载服务账户 JSON 文件
        String serviceAccountContent = await rootBundle.loadString(
          'assets/service_account.json',
        );
        debugPrint('Service account loaded.');

        // 使用服务账户内容初始化 Okta
        await oktaApp.initializeAppWithServiceAccount(
          serviceAccountContent: serviceAccountContent,
        );
        debugPrint('Okta initialized for Mobile.');
      }
    }

    // 获取 Okta 身份验证实例
    final auth = oktaApp.instance.getAuth();
    debugPrint('Okta Auth instance obtained.');

    runApp(const MyApp());
  } catch (e, stackTrace) {
    debugPrint('Error initializing Okta: $e');
    debugPrint('StackTrace: $stackTrace');
  }
}

详细步骤

  1. 导入包: 在 Dart 或 Flutter 项目中导入包:

    import 'package:okta_identity_dart_auth_sdk/okta_identity_dart_auth_sdk.dart';
    
  2. Web 初始化: 对于 Flutter Web,初始化 Okta 应用程序:

    oktaApp.initializeAppWithEnvironmentVariables(
      clientId: 'YOUR-CLIENT-ID',
      issuer: 'YOUR-ISSUER',
      redirectUri: 'http://localhost:8080/callback',
    );
    
  3. 移动设备初始化

    • 加载服务账户 JSON 文件:
      String serviceAccountContent = await rootBundle.loadString(
        'assets/service_account.json',
      );
      
    • 使用服务账户内容初始化 Okta:
      await oktaApp.initializeAppWithServiceAccount(
        serviceAccountContent: serviceAccountContent,
      );
      
  4. 获取 Okta 身份验证实例

    final auth = oktaApp.instance.getAuth();

更多关于Flutter身份验证插件okta_identity_dart_auth_sdk的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter身份验证插件okta_identity_dart_auth_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


okta_identity_dart_auth_sdk 是一个用于在 Flutter 应用中集成 Okta 身份验证的 Dart SDK。它允许你轻松地将 Okta 的身份验证功能集成到你的 Flutter 应用中,包括用户登录、注册、注销、获取用户信息等。

以下是如何在 Flutter 项目中使用 okta_identity_dart_auth_sdk 的基本步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 okta_identity_dart_auth_sdk 依赖:

dependencies:
  flutter:
    sdk: flutter
  okta_identity_dart_auth_sdk: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来安装依赖。

2. 配置 Okta

在 Okta 开发者控制台中创建一个新的应用程序,并配置以下内容:

  • 应用程序类型: Native Application
  • 重定向 URI: 例如 com.example.app:/callback(根据你的应用配置)
  • 注销重定向 URI: 例如 com.example.app:/logout

获取以下信息:

  • Client ID
  • Issuer URL (例如 https://{your-okta-domain}.okta.com/oauth2/default)

3. 初始化 SDK

在你的 Flutter 应用中初始化 okta_identity_dart_auth_sdk。通常你可以在 main.dart 或某个初始化文件中进行初始化。

import 'package:okta_identity_dart_auth_sdk/okta_identity_dart_auth_sdk.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // 初始化 Okta SDK
  await OktaAuth.init(
    clientId: 'YOUR_CLIENT_ID',
    issuer: 'https://{your-okta-domain}.okta.com/oauth2/default',
    redirectUri: 'com.example.app:/callback',
    logoutRedirectUri: 'com.example.app:/logout',
  );

  runApp(MyApp());
}

4. 实现登录功能

在你的应用中实现登录功能。你可以使用 OktaAuth.signIn() 方法来启动登录流程。

import 'package:okta_identity_dart_auth_sdk/okta_identity_dart_auth_sdk.dart';

Future<void> login() async {
  try {
    final result = await OktaAuth.signIn();
    print('Login successful: ${result.accessToken}');
  } catch (e) {
    print('Login failed: $e');
  }
}

5. 获取用户信息

登录成功后,你可以使用 OktaAuth.getUser() 方法来获取用户信息。

Future<void> getUserInfo() async {
  try {
    final userInfo = await OktaAuth.getUser();
    print('User Info: ${userInfo.toJson()}');
  } catch (e) {
    print('Failed to get user info: $e');
  }
}

6. 实现注销功能

你可以使用 OktaAuth.signOut() 方法来注销用户。

Future<void> logout() async {
  try {
    await OktaAuth.signOut();
    print('Logout successful');
  } catch (e) {
    print('Logout failed: $e');
  }
}

7. 处理回调

AndroidManifest.xmlInfo.plist 中配置回调 URL,以便 Okta 可以正确重定向回你的应用。

AndroidManifest.xml:

<activity android:name="com.okta.oidc.OktaRedirectActivity">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="com.example.app" />
    </intent-filter>
</activity>

Info.plist:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>com.example.app</string>
        </array>
    </dict>
</array>

8. 处理令牌刷新

你可以使用 OktaAuth.getAccessToken() 方法来获取当前的访问令牌,并在需要时刷新令牌。

Future<void> getAccessToken() async {
  try {
    final accessToken = await OktaAuth.getAccessToken();
    print('Access Token: $accessToken');
  } catch (e) {
    print('Failed to get access token: $e');
  }
}

9. 处理错误

在使用 SDK 时,确保处理可能出现的错误,例如网络错误、用户取消登录等。

try {
  final result = await OktaAuth.signIn();
  print('Login successful: ${result.accessToken}');
} catch (e) {
  print('Login failed: $e');
}
回到顶部