# IOS Add Auth

> Add authentication to an iOS app with Sign in with Apple, biometrics, and Keychain storage. Use when this capability is needed.

- Skill: `tomevault-io/ios-add-auth` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add tomevault-io/ios-add-auth`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tomevault-io/ios-add-auth/raw
- Safety review: pending (external: skill-scanner PASS, skillspector CAUTION)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: tomevault-io (https://skillmd.com/u/tomevault-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tomevault-io/ios-add-auth

---


## Purpose
Add secure authentication to an existing iOS project using Apple-native approaches.

## Arguments
- `--providers <list>` — Comma-separated providers (default: `apple,biometric`)
  - `apple` — Sign in with Apple
  - `biometric` — Face ID / Touch ID
  - `credentials` — Email/password (requires backend)
- `--with-backend` — Include API client for backend auth

## What gets created

```
Services/
├── Auth/
│   ├── AuthService.swift           # Main auth service
│   ├── AuthState.swift             # Auth state enum
│   ├── KeychainManager.swift       # Secure token storage
│   ├── BiometricAuthManager.swift  # Face ID / Touch ID
│   └── SignInWithAppleManager.swift

Features/
├── Auth/
│   ├── SignInView.swift            # Sign-in screen
│   ├── SignInViewModel.swift
│   └── AuthenticatedContainer.swift # Wraps authenticated content

Models/
└── User.swift                      # User model
```

## Capabilities required

Add to Xcode project:
- **Sign in with Apple** capability (for `apple` provider)

Add to Info.plist:
- `NSFaceIDUsageDescription` — "Use Face ID to unlock the app"

## Keychain storage
- Access tokens stored in Keychain (not UserDefaults)
- Uses `kSecAttrAccessibleWhenUnlockedThisDeviceOnly`
- Biometric-protected option available

## Auth flow
1. Check for existing session (Keychain)
2. If biometrics enabled, prompt for Face ID/Touch ID
3. If no session, show sign-in screen
4. On successful auth, store tokens in Keychain
5. Handle token refresh (if backend)

## Workflow
1. Add Sign in with Apple capability in Xcode
2. Create auth services and managers
3. Create sign-in UI
4. Create authenticated container wrapper
5. Integrate with DependencyContainer
6. Add Info.plist entries
7. Test on device (biometrics require device)

## Security requirements
- Never store tokens in UserDefaults
- Use Keychain with appropriate accessibility
- Validate Sign in with Apple tokens server-side
- Handle biometric fallback gracefully
- Clear Keychain on sign-out

## Output
Summarize: providers configured, capabilities needed, UI components, security setup.

## Reference
For implementation details and security patterns, see `reference/ios-add-auth-reference.md`

---
> Converted and distributed by [TomeVault](https://tomevault.io/claim/edfenton) — claim your Tome and manage your conversions.
<!-- tomevault:4.0:skill_md:2026-04-13 -->

