Flutter Azure 身份验证插件azure_identity的使用

Flutter Azure 身份验证插件 azure_identity 的使用

简介

该包是用于 Dart 的简化版 @azure/identity。Azure Identity 提供了通过 Microsoft Entra ID 身份进行令牌身份验证的机制。由于支持不同的身份验证机制,它可以在本地与部署在 Azure 上的服务进行身份验证,也可以用来对部署在 Azure 上的 Dart 服务进行身份验证。

微软提供了不同架构的实现,但目前没有为 Dart 提供实现。此包旨在成为构建类似且功能等效解决方案的起点。

早期版本的此包通过使用一个 NodeJS 脚手架调用 DefaultAzureCredential() 来实现。NodeJS 脚手架被交叉编译成二进制文件并通过 shell 环境执行。虽然这使得该包无法在 pub.dev 上发布,但它提供了一个非常灵活的初始解决方案。该版本的包仍然可以在 bridged-implementation 分支中找到。

当前代码是纯 Dart 代码,并支持以下凭证:

  • 管理身份 2017 API 版本
  • 管理身份 2019 API 版本
  • Azure CLI 凭证
  • 代理 Azure CLI 凭证(自定义添加,以使本地运行的 Docker 容器能够使用 Azure Identity)
  • 链式凭证
  • 默认凭证(管理身份 2017、管理身份 2019 和 Azure CLI 的链式凭证)

使用示例

以下是使用 azure_identity 插件进行身份验证的完整示例:

import 'package:azure_identity/azure_identity.dart';

Future<void> main() async {
  // 创建 DefaultAzureCredential 实例
  final defaultAzureCredential = DefaultAzureCredential(
    logger: print, // 设置日志输出
  );

  // 初始化凭证管理器
  final credentialManager = CredentialManager(
    credential: defaultAzureCredential,
    options: GetTokenOptions(
      scopes: ['https://myserver.fhir.azurehealthcareapis.com/'], // 指定作用域
    ),
  );

  // 获取访问令牌
  final token = await credentialManager.getAccessToken();

  // 打印令牌
  print(token?.token);
}

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

1 回复

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


azure_identity 是 Azure SDK for Dart 中的一个包,用于在 Flutter 应用程序中处理 Azure 身份验证。它提供了与 Azure Active Directory (Azure AD) 集成的方式,允许应用程序使用 OAuth 2.0 和 OpenID Connect 等协议进行身份验证和授权。

以下是如何在 Flutter 应用程序中使用 azure_identity 插件进行身份验证的基本步骤:

1. 添加依赖项

首先,在 pubspec.yaml 文件中添加 azure_identityazure_core 依赖项:

dependencies:
  flutter:
    sdk: flutter
  azure_identity: ^1.0.0
  azure_core: ^1.0.0

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

2. 配置 Azure AD 应用

在 Azure 门户中创建一个 Azure AD 应用程序,并配置重定向 URI 以匹配你的 Flutter 应用程序。你需要获取以下信息:

  • 客户端 ID (Client ID): 你的 Azure AD 应用的应用程序 ID。
  • 租户 ID (Tenant ID): 你的 Azure AD 租户的 ID。
  • 重定向 URI (Redirect URI): 你的应用程序的重定向 URI,通常类似于 https://login.microsoftonline.com/common/oauth2/nativeclient

3. 实现身份验证

在你的 Flutter 应用程序中,使用 azure_identity 插件进行身份验证。以下是一个简单的示例:

import 'package:azure_identity/azure_identity.dart';
import 'package:azure_core/azure_core.dart';

void main() async {
  // 初始化 Azure Identity
  final credential = InteractiveBrowserCredential(
    clientId: 'YOUR_CLIENT_ID',
    tenantId: 'YOUR_TENANT_ID',
    redirectUri: 'https://login.microsoftonline.com/common/oauth2/nativeclient',
  );

  // 获取访问令牌
  try {
    final token = await credential.getToken(AzureTokenScope(['https://graph.microsoft.com/.default']));
    print('Access Token: ${token.token}');
  } catch (e) {
    print('Error: $e');
  }
}

4. 使用访问令牌

一旦你获得了访问令牌,你可以使用它来调用受保护的 Azure 服务,例如 Microsoft Graph API。

import 'package:http/http.dart' as http;

void callMicrosoftGraph(String accessToken) async {
  final response = await http.get(
    Uri.parse('https://graph.microsoft.com/v1.0/me'),
    headers: {
      'Authorization': 'Bearer $accessToken',
    },
  );

  if (response.statusCode == 200) {
    print('Response: ${response.body}');
  } else {
    print('Error: ${response.statusCode}');
  }
}
回到顶部