OSS探訪GitHubでログイン

Apple Keychainへの保存・取得・accessibility・Face ID保護をSwift APIで扱う

スコアの見方

OSS規模スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした現在の規模指標(上限なし)です。発掘スコアは現在のOSS規模スコアから発掘時点のOSS規模スコアを引いた値、更新ペースは直近30日Commit数、成長モメンタムは直近の観測期間におけるOSS規模スコア差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
8,253
主要言語
Swift
ライセンス
MIT
リポジトリ最終更新
2024/05/31
ページ内ナビ

概要

KeychainAccessはSecurity frameworkのKeychain APIをSwiftから扱いやすくするwrapperです。application passwordやinternet passwordの保存・取得・削除に加え、access group、accessibility、iCloud同期、Touch ID/Face ID保護をfluentなAPIで設定できます。

特徴と向いている用途

公式資料に基づく紹介・実機未検証 · 内容確認日:

主な特徴

serviceまたはserver単位のKeychainへString/Dataを保存・取得する

Keychain(service:)やKeychain(server:protocolType:)を作成し、subscriptまたはset/get methodでcredentialを保存・取得できます。access tokenやpasswordをUserDefaults等へ置かずKeychainへ移すための薄いSwift APIとして利用できます。

出典:[2]

accessibility・sharing・iCloud同期・生体認証policyを設定する

accessibility、accessGroup、synchronizable、authenticationPolicyを組み合わせてitemの利用条件を指定できます。Face IDを利用する場合はNSFaceIDUsageDescriptionが必要で、認証を伴うoperationはbackground threadで実行するようREADMEで注意されています。

出典:[2]

向いている用途

token・credential・device内secretをKeychainへ保存したいiOS applicationに向く

login token、API credential、device-specific secretなどをKeychainへ保存しつつ、Apple Security frameworkの低level APIを各画面で直接扱いたくない場合に適します。

出典:[2]

導入前の確認

latest release 4.2.2は2021年で、current Swift/Xcodeでの互換性確認が必要

GitHubのlatest releaseは2021年3月のv4.2.2で、Package.swiftはSwift tools 5.0とiOS 8以上を宣言しています。repositoryの最終pushは2024年5月でrelease間隔が長いため、現在のSwift/Xcode、strict concurrency、deployment設定でbuild・warning・runtime behaviorを確認してから採用してください。

出典:[4][3][1]

参考にした公式資料

  1. [1]kishikawakatsumi/KeychainAccess — GitHub repository(2026-10-06)
  2. [2]KeychainAccess v4.2.2 — README(2026-10-06)
  3. [3]KeychainAccess v4.2.2 — Package.swift(2026-10-06)
  4. [4]KeychainAccess v4.2.2 release(2026-10-06)
  5. [5]KeychainAccess MIT license(2026-10-06)
編集部からの補足

tokenやcredentialをKeychainへ保存しつつSecurity frameworkの低level APIを直接扱いたくないiOS appに向きます。latest releaseが2021年のため、現行Swift/Xcodeでbuildとruntime behaviorを確認してから採用してください。

3ステップで試す

  1. 1

    KeychainAccess 4.2.2をSwiftPMで追加する

    latest GitHub releaseを固定します。releaseが古いため、現行Swift/Xcodeでbuildできることを先に確認してください。

    .package(url: "https://github.com/kishikawakatsumi/KeychainAccess.git", exact: "4.2.2")
  2. 2

    service単位のKeychainを作る

    application credential用のservice名を指定してKeychain wrapperを作成します。

    import KeychainAccess let keychain = Keychain(service: "com.example.app")
  3. 3

    tokenを保存して読み戻す

    set/get methodでcredentialを保存・取得し、UserDefaults等ではなくKeychainへ格納される経路を確認します。

    try keychain.set("token-value", key: "accessToken") let token = try keychain.get("accessToken")
公式READMEで確認

成長

成長の推移 · 直近30日

8,253 Stars

推移データを蓄積中です。

開発アクティビティ

直近90日・週次

Commit(直近30日)
0
Open PR
6

開発アクティビティを蓄積中です。

Built with

カテゴリとタグ

GitHubデータ

GitHubのデータGitHubの詳細データを見る

GitHub Topics

  • keychain
  • touch-id
  • security
Stars
8,253
Forks
853
Watchers
130
Open Issues
48
Contributors
27
所有者種別
User
主要言語
Swift
ライセンス
MIT
リポジトリ最終更新
2024/05/31

このOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。

情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。

このページを読んで、次に何をすればよいか分かりましたか?