feat: secure_session commands, login tokens in the OS keychain (cinny #105, step 1)
Commands for the web client to keep a copy of the login tokens in the OS keychain: secure_session_supported / _set / _get / _clear. - Windows: Credential Manager via the keyring crate (3.6, windows-native), entry "session" in service "Lotus Chat". Only the secrets are stored (userId, deviceId, accessToken, refreshToken); the serialized value is capped at 1200 chars (Windows' limit is 2560 bytes). - Other platforms: supported = false and the other commands answer "not supported on this platform" (Linux Secret Service can prompt to unlock a wallet at startup; that needs its own testing). No new Linux dependency: without a platform feature the crate only has its mock store. - Keychain calls run on the blocking pool, off the main thread. Step 1 is a mirror only (the web client still reads its session from localStorage); see the cinny PR. Tests: round trip + clear, clearing an empty keychain, incomplete and oversized sessions rejected with nothing written, the JSON shape the web client sends, a realistic OIDC session fits (keyring's mock store). Linux release build: commands answer as designed and login is unaffected. Windows: type-checked only. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
884877a55b
commit
032b6e04e7
Generated
+13
@@ -498,6 +498,7 @@ checksum = "6e4de3bc4ea267985becf712dc6d9eed8b04c953b3fcfb339ebc87acd9804901"
|
||||
name = "cinny"
|
||||
version = "4.12.2"
|
||||
dependencies = [
|
||||
"keyring",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"tauri",
|
||||
@@ -2090,6 +2091,18 @@ dependencies = [
|
||||
"unicode-segmentation",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "keyring"
|
||||
version = "3.6.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "eebcc3aff044e5944a8fbaf69eb277d11986064cba30c468730e8b9909fb551c"
|
||||
dependencies = [
|
||||
"byteorder",
|
||||
"log",
|
||||
"windows-sys 0.60.2",
|
||||
"zeroize",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "kuchikiki"
|
||||
version = "0.8.8-speedreader"
|
||||
|
||||
Reference in New Issue
Block a user