Flutter身份认证插件forgerock_authenticator的使用

发布于 1周前 作者 wuwangju 来自 Flutter

Flutter身份认证插件forgerock_authenticator的使用


Build and Test codecov License: MIT

Logo

Change Log · Support · Docs


ForgeRock身份认证插件使您能够轻松地将官方ForgeRock身份验证应用程序的功能集成到您的应用中。

身份验证模块支持:

  • 基于时间的一次性密码(TOTP)
  • 基于HMAC的一次性密码(HOTP)
  • 推送通知

该项目作为Flutter插件提供,包括特定于平台的实现代码,并利用了我们的原生SDK中的身份验证模块。该插件还包括一个身份验证应用程序作为示例项目,以帮助演示SDK功能。该示例包含了官方ForgeRock身份验证应用中的大部分功能。

需求

  • ForgeRock身份平台
    • 访问管理(AM) 6.5.2
  • Android API 级别 23+
  • iOS 12 及以上
  • Flutter SDK 2.10.x 及以上

安装

pubspec.yaml文件中添加以下依赖:

dependencies:
  forgerock_authenticator:^1.1.2

入门指南

Android

要尝试ForgeRock Android SDK示例,请执行以下步骤:

  1. 设置访问管理(AM)实例以支持 OATH 或 Push。
  2. 克隆此仓库。
  3. 在Android Studio中打开Android项目 forgerock-authenticator/example/android
  4. google-services.json 添加到 app 文件夹中。
  5. 在运行菜单中,点击“运行 ‘app’”。
iOS

要尝试ForgeRock身份验证iOS示例应用,请执行以下步骤:

  1. 设置访问管理(AM)实例以支持 OATH 或 Push。
  2. 克隆此仓库。
  3. 在Xcode中打开 forgerock-authenticator/example/ios/Runner.xcworkspace 文件。
  4. 更新你的XCode项目设置(Bundle Identifier, Provisioning Profile, Certificates等)。
  5. 确保活动方案是“Runner”,然后点击运行按钮。

支持

如果您遇到任何问题,请务必查看我们的故障排除页面。

您可以随时通过以下方式提出支持请求:

  • 涉及ForgeRock软件的疑似错误或问题。
  • 请求协助 - 请先查阅文档知识库

您可以通过BackStage,我们的客户支持门户来提交支持请求。BackStage展示了所有当前开放的支持票证,并允许您通过点击“新票证”来创建新的票证。

贡献

如果您想为本项目做出贡献,可以先fork仓库,然后克隆到本地并开始工作。

免责声明

此代码由ForgeRock按“原样”提供,没有任何形式的保证。ForgeRock不表示或保证与本代码相关的数据或信息的准确性、时效性和完整性。ForgeRock在此明确放弃所有明示或默示的担保,包括但不限于适销性、特定用途适用性的默示担保以及非侵权担保。对于因使用、实施或配置本代码而引起的任何责任,ForgeRock概不负责。与本代码的使用有关的任何诉讼只能在ForgeRock所在地或其主要业务所在地的法院提起,并受该司法管辖区的法律管辖,但冲突法除外。

许可证

该项目根据MIT许可证授权 - 详情请参阅LICENSE文件。


示例代码

/*
 * Copyright (c) 2022 ForgeRock. All rights reserved.
 *
 * This software may be modified and distributed under the terms
 * of the MIT license. See the LICENSE file for details.
 */

import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

import 'package:forgerock_authenticator_example/providers/authenticator_provider.dart';
import 'package:forgerock_authenticator_example/screens/home_screen.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // 初始化SDK
  AuthenticatorProvider.initialize();

  runApp(AuthenticatorApp());
}

class AuthenticatorApp extends StatelessWidget {

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MultiProvider(
      providers: [
        ChangeNotifierProvider<AuthenticatorProvider>(
            create: (_) => AuthenticatorProvider()..getAllAccounts()
        ),
      ],
      child: MaterialApp(
        home: HomeScreen(),
      ),
    );
  }
}

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

1 回复

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


在Flutter项目中,使用forgerock_authenticator插件进行身份认证时,可以通过以下步骤和代码示例来实现。这个插件通常用于与ForgeRock身份和访问管理(IAM)解决方案集成,以进行多因素认证(MFA)等安全操作。

首先,确保你的Flutter项目已经正确设置,并且已经添加了forgerock_authenticator依赖。在你的pubspec.yaml文件中添加以下依赖:

dependencies:
  flutter:
    sdk: flutter
  forgerock_authenticator: ^最新版本号 # 请替换为实际的最新版本号

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

接下来,你可以按照以下步骤在你的Flutter应用中使用forgerock_authenticator插件:

  1. 初始化插件

在你的主文件(通常是main.dart)中,初始化插件并配置必要的参数。

import 'package:flutter/material.dart';
import 'package:forgerock_authenticator/forgerock_authenticator.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Forgerock Authenticator Example'),
        ),
        body: AuthenticatorExample(),
      ),
    );
  }
}

class AuthenticatorExample extends StatefulWidget {
  @override
  _AuthenticatorExampleState createState() => _AuthenticatorExampleState();
}

class _AuthenticatorExampleState extends State<AuthenticatorExample> {
  final ForgerockAuthenticator _authenticator = ForgerockAuthenticator();

  @override
  void initState() {
    super.initState();
    // 初始化插件,例如设置服务器URL等(根据实际需要配置)
    _authenticator.initialize(
      serverUrl: 'https://your-forgerock-server.com', // 替换为你的ForgeRock服务器URL
      clientId: 'your-client-id', // 替换为你的客户端ID
      redirectUri: 'your-redirect-uri://callback', // 替换为你的回调URI
    );
  }

  @override
  Widget build(BuildContext context) {
    return Center(
      child: ElevatedButton(
        onPressed: () async {
          // 触发认证流程,例如开始登录
          try {
            await _authenticator.startAuthenticationFlow();
          } catch (e) {
            print('Authentication error: $e');
          }
        },
        child: Text('Start Authentication'),
      ),
    );
  }
}
  1. 处理回调

由于forgerock_authenticator插件通常会启动一个外部的浏览器视图或应用来处理认证流程,你需要在你的AndroidManifest.xmlInfo.plist文件中注册回调URI,并在应用中处理回调。

Android:

AndroidManifest.xml中添加一个<intent-filter>来处理回调URI:

<activity
    android:name=".MainActivity"
    android:launchMode="singleTop"
    android:theme="@style/LaunchTheme"
    android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
    android:hardwareAccelerated="true"
    android:windowSoftInputMode="adjustResize">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <!-- 添加以下intent-filter -->
    <intent-filter>
        <data android:scheme="your-redirect-uri" android:host="callback" />
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
    </intent-filter>
</activity>

iOS:

Info.plist中添加一个URL Types配置来处理回调URI:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>your-redirect-uri</string>
        </array>
    </dict>
</array>

然后,在你的Flutter应用中,你可能需要监听设备返回事件,并处理认证结果。这通常涉及到插件提供的回调机制,但具体实现可能依赖于插件的API设计。由于forgerock_authenticator插件的具体API可能有所变化,请参考其官方文档和示例代码来获取最新的回调处理机制。

请注意,上述代码和配置是基于假设的,并且可能需要根据你使用的forgerock_authenticator插件的具体版本和API进行调整。务必查阅插件的官方文档和示例代码来获取准确的使用指南和API参考。

回到顶部