---
title: "sdk/macos"
description: "Swift-SDK für macOS mit ASWebAuthenticationSession,PKCE-S256-Autorisierungscode-Flow und Keychain-Token-Speicher. Teilt dasImplementierungsmuster mit sdk/ios."
locale: "de"
---

> Documentation Index
> Fetch the relevant documentation index at: https://vonvon.id/de/sdks/llms.txt
> Use this file to discover all available pages before exploring further.

# sdk/macos

## Zustand

Der Paketstatus lautet **Lokal implementiert und verifiziert**. Die Swift-Unit-Test-Suite ist unter macOS erfolgreich. Keychain-Zugriff, der vollständige ASWebAuthenticationSession-Callback und ein echter IdP-Roundtrip erfordern weiterhin Nachweise aus einer Desktop-Integration. Diese Seite dokumentiert implementiertes Verhalten; sie stellt keine Aussage zur Produktionsreife dar.

Registry-Status: UNPUBLISHED. Installieren Sie dieses SDK nur aus einem Checkout des Repository-Quellcodes; verwenden Sie keine externe Paket-Registry.

## Anforderungen

- macOS 13+
- Swift 5.9+ und Xcode 15+
- Keine Drittanbieter-Abhängigkeiten — verwendet Apple-System-Frameworks(AuthenticationServices, CryptoKit, Security)

## Installation

Über Swift Package Manager in Package.swift hinzufügen:

```swift
// Package.swift
dependencies: [
.package(path: "../vonvon/sdk/macos"),
],
targets: [
.target(name: "YourApp", dependencies: [.product(name: "Vonvon", package: "macos")]),
]
```

## Schnellstart

```swift
import Vonvon

let client = VonvonClient()

// 1. Configure. offline_access is rejected until DPoP is implemented.
client.configure(VonvonOptions(
issuer: URL(string: "https://vonvon.id")!,
clientId: "your_client_id",
redirectUri: "yourapp://callback"
))

// 2. Sign in (opens ASWebAuthenticationSession)
let session = try await client.signIn()

// 3. Get the current unexpired access token. Expiry requires reauthorization.
let token = try await client.getAccessToken()

// 4. Get the current unexpired session.
let current = try await client.getSession()

// 5. Clear local state and optionally call end_session.
try await client.signOut()
```

## Kern-API

| Methode | Beschreibung |
| --- | --- |
| `configure(_ options:)` | issuer, clientId, redirectUri und scopes festlegen. Vor allen anderenMethoden aufrufen. |
| `signIn() async throws -> VonvonSession` | ASWebAuthenticationSession starten, PKCE-S256-Autorisierungscode-Flowabschließen, Tokens in Keychain persistieren und eine Sitzung zurückgeben. |
| `handleRedirect(_ url:) async throws -> VonvonSession` | Eine Weiterleitungs-URL aus einer externen Quelle verarbeiten und den Codegegen Tokens eintauschen. |
| `getSession() async throws -> VonvonSession?` | Gibt die aktuelle, nicht abgelaufene macOS-Sitzung zurück; ein abgelaufener Token-Status wird gelöscht und die Methode gibt nil zurück. |
| `getAccessToken() async throws -> String` | Gibt das aktuelle, nicht abgelaufene Zugriffstoken zurück. Das SDK lehnt offline\_access ab, bis DPoP implementiert ist; nach Ablauf ist eine erneute Autorisierung erforderlich. |
| `signOut() async throws` | Keychain-Tokens löschen und optional den end\_session-Endpunkt aufrufen; ein Widerruf des Refresh-Tokens wird nicht durchgeführt. |

## Beziehung zu sdk/ios

Das macOS-SDK teilt dasselbe Swift-Implementierungsmuster wie sdk/ios —ASWebAuthenticationSession für browserbasierte Autorisierung, CryptoKitfür PKCE S256 und Keychain für Token-Speicher. Die zwei Pakete zielen aufunterschiedliche Apple-Plattformminima ab und werden separat gepflegt, umplattformspezifische Berechtigungskonfiguration zu ermöglichen.

## Sicherheit

- Öffentlicher Client — kein Client-Secret gespeichert oder übertragen.
- Nur PKCE S256. Der Server lehnt die Plain-Challenge-Methode ab.
- OAuth-State wird pro Anfrage generiert; bei der Weiterleitung zurCSRF-Prävention validiert.
- Tokens im Keychain mit gerätebeschränktem Zugriff gespeichert; nicht mitdem iCloud-Keychain synchronisiert.

## Bekannte Einschränkungen

- Die JWKS-gestützte ES256/RS256-ID-Token-Prüfung und die end\_session-Abmeldung sind implementiert und lokal getestet. Für L4 sind noch echte macOS-Keychain- und IdP-Tests erforderlich.
- Die gemeinsame Swift-Kern-Extraktion mit sdk/ios ist geplant, aber nochnicht abgeschlossen — jedes Paket trägt seine eigeneImplementierungskopie.

Source: https://vonvon.id/de/sdks/macos/index.mdx
