feat(auth): Cross-App-SSO via shared Keychain-Group ev.mana.session
Migriert die App auf die kanonische shared Keychain-Group `ManaSharedKeychainGroup` aus mana-swift-core. Alle nativen mana-e.V.-Apps (memoro, wordeck, nutriphi, herbatrium, zitare, seepuls, viadocu, manameme, werdrobe, pageta, comicello, moodlit) teilen damit ihren Auth-Token auf demselben Device — ein Login in einer App, alle anderen starten direkt im .signedIn-Status. Wichtig: für echtes Cross-App-Sharing müssen sowohl `keychainService` als auch `keychainAccessGroup` identisch sein (Keychain-Lookup-Tupel `(service, account, accessGroup)`) — beide jetzt auf `ManaSharedKeychainGroup`. Bestehender App-eigener Bucket (`ev.mana.<app>`) wird beim ersten Login mit dem neuen Token überschrieben; User in TestFlight-Apps brauchen einen Re-Login. Voraussetzung Apple-Dev-Portal (Tills manueller Schritt): - Capability "Keychain Sharing" für die App ID aktivieren - Group `ev.mana.session` hinzufügen - Provisioning-Profile neu downloaden (Xcode auto) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
d43dc53124
commit
99f81fcb78
2 changed files with 7 additions and 3 deletions
|
|
@ -14,10 +14,10 @@ enum AppConfig {
|
|||
|
||||
static let manaAppConfig: ManaAppConfig = DefaultManaAppConfig(
|
||||
authBaseURL: URL(string: "https://auth.mana.how")!,
|
||||
keychainService: "ev.mana.zitare",
|
||||
keychainService: ManaSharedKeychainGroup,
|
||||
// Explizit auf TeamID.BundleID, statt nil. Vermeidet Logout
|
||||
// bei TestFlight-Cert-Drift (siehe mana-swift-core v1.5.1).
|
||||
keychainAccessGroup: "QP3GLU8PH3.ev.mana.zitare",
|
||||
keychainAccessGroup: ManaSharedKeychainGroup,
|
||||
appGroup: appGroup
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@ targets:
|
|||
com.apple.security.network.client: true
|
||||
com.apple.security.files.user-selected.read-write: true
|
||||
keychain-access-groups:
|
||||
- $(AppIdentifierPrefix)ev.mana.zitare
|
||||
- $(AppIdentifierPrefix)ev.mana.session
|
||||
# Universal-Link-Domains:
|
||||
# - zitare.com ist die kanonische Production-Domain (steht
|
||||
# auch im Manifest und im AASA-File auf zitare-com).
|
||||
|
|
@ -148,6 +148,8 @@ targets:
|
|||
entitlements:
|
||||
path: ShareExtension/Resources/ZitareShareExtension.entitlements
|
||||
properties:
|
||||
keychain-access-groups:
|
||||
- $(AppIdentifierPrefix)ev.mana.session
|
||||
com.apple.security.application-groups:
|
||||
- group.ev.mana.zitare
|
||||
settings:
|
||||
|
|
@ -178,6 +180,8 @@ targets:
|
|||
entitlements:
|
||||
path: Widgets/ZitareWidget/Resources/ZitareWidgetExtension.entitlements
|
||||
properties:
|
||||
keychain-access-groups:
|
||||
- $(AppIdentifierPrefix)ev.mana.session
|
||||
com.apple.security.application-groups:
|
||||
- group.ev.mana.zitare
|
||||
dependencies:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue