KoreaMango 나무

Flutter - secure_storage || KeyChain 사용법 (feat. Method Channel) 본문

Flutter

Flutter - secure_storage || KeyChain 사용법 (feat. Method Channel)

KoreaMango 2024. 11. 10. 22:51

안녕하세요 :)

 

iOS 에서는 계정 토큰 관련된 정보는 보안을 위해 KeyChain이라는 곳에 저장하는데요.

 

KeyChain은 Apple이 제공하는 보안 저장소라서, 암호화되어 저장됩니다.

 

Flutter도 이렇게 민감한 정보들을 저장할 때는 Native 쪽의 암호화가 되어 있는 곳에 저장해야 합니다. 

 

그래서 iOS인 경우는 Method Channel을 통해서 통신을 하고 데이터를 전달한 다음, KeyChain에 저장해야 합니다.

이렇게 로컬에 저장하는데, Method Channel 로 요청을 보내고 Native에서 작업을 진행하려면 꽤 작업이 들어가는데요.

 

이러한 작업을 간단하게 도와줄 패키지가 있습니다.

 

https://pub.dev/packages/flutter_secure_storage

 

flutter_secure_storage | Flutter package

Flutter Secure Storage provides API to store data in secure storage. Keychain is used in iOS, KeyStore based solution is used in Android.

pub.dev

 

Flutter Secure Storage 라고 하는데요! 

 

들어가서 보시면 아시겠지만 매우 간단하게 추상화되어 있습니다. 

 

import 'package:flutter_secure_storage/flutter_secure_storage.dart';

// Create storage
final storage = new FlutterSecureStorage();

// Read value
String value = await storage.read(key: key);

// Read all values
Map<String, String> allValues = await storage.readAll();

// Delete value
await storage.delete(key: key);

// Delete all
await storage.deleteAll();

// Write value
await storage.write(key: key, value: value);

 

엄청 간단하죠 허허

 

그래서 JWT나 Auth정보는 LocalDB인 SharedPreference가 아니라 Secure Storage에 저장해봐요 :)

 

추가적으로 정보를 알려드리자면 

Method Channel은 Flutter와 Native 코드 간의 양방향 통신을 하게 해주는 중요한 친구입니다 :)

 

 

구조는 이런 식으로 되어 있습니다. 출처는 아래에 있습니다!

https://docs.flutter.dev/platform-integration/platform-channels

 

Writing custom platform-specific code

Learn how to write custom platform-specific code in your app.

docs.flutter.dev