---
title: ASWebAuthenticationSession
description: 'So implementieren Sie die Erfassungserfahrung von Verifizierung ohne physische Karte unter iOS mit ASWebAuthenticationSession: Authentifizierungscontroller, Sitzungseinrichtung und erforderliche Berechtigungen.'
canonical: https://developer.unico.io/de/dual-api/developers/regional-solutions/card-not-present-verification/integration/controlling-the-experience/mobile/ios/aswebauthenticationsession
locale: de
generated_by: markdown-export
---

Für die Nutzung unter iOS ist die Verwendung von ASWebAuthenticationSession einer der empfohlenen Ansätze.

Nach dem Erstellen der Transaktion und dem Abrufen des Transaktionslinks wird folgende Implementierung empfohlen:

- In Ihrem regulären Ablauf (der Verifizierung ohne physische Karte einschließt) öffnen Sie die ASWebAuthenticationSession mit dem über die API generierten Link.
- Sie können dieses Öffnen so anpassen, wie es für Ihre App am besten geeignet ist.
- Sie überwachen, ob sich die URL geändert hat (zur `redirectUrl`) und schließen dann die Seite.

Damit der Ablauf funktioniert, müssen Sie die folgenden Schritte befolgen:

### Schritt 1: Erstellen des Zahlungsauthentifizierungscontrollers

Der erste Schritt besteht darin, den Zahlungsauthentifizierungscontroller zu erstellen. Erstellen Sie dazu eine Klasse namens `IDPayAuthenticationController` (oder einen beliebigen anderen Namen Ihrer Wahl).

Importieren Sie anschließend das `AuthenticationServices`-Framework am Anfang der Klasse.

Deklarieren Sie die Klasse als `NSObject` und implementieren Sie das Protokoll `ASWebAuthenticationPresentationContextProviding`.

Das Ergebnis sollte wie folgt aussehen:

```swift
import AuthenticationServices

class IDPayAuthenticationController: NSObject, ASWebAuthenticationPresentationContextProviding {
    func presentationAnchor(for session: ASWebAuthenticationSession) -> ASPresentationAnchor {
           if let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene {
               if let mainWindow = windowScene.windows.first {
                   return mainWindow
               }
           }
           return ASPresentationAnchor()
       }
}
```

### Schritt 2: Implementieren der Authentifizierung

Öffnen Sie die Datei, in der Sie die Authentifizierung durchführen, und fügen Sie die erforderlichen Imports hinzu (in unserem Beispiel geschieht dies in `ContentView.swift`).

```swift
import SwiftUI
import AuthenticationServices
```

Um den Authentifizierungsstatus zu steuern, erstellen wir eine `@State`-Eigenschaft.

```swift
@State private var isAuthenticated = false
```

Erstellen Sie eine Instanz der Klasse `IDPayAuthenticationController` außerhalb des Bodys der Struktur `ContentView`.

```swift
let idPayController = IDPayAuthenticationController()
```

Um die Zahlung zu validieren, erstellen Sie eine Funktion namens `authenticatePayment`.

```swift
func authenticatePayment() {
    guard let url = URL(string: "URL_AUTHENTICATION") else { return }

    var session: ASWebAuthenticationSession?
    session = ASWebAuthenticationSession(url: url, callbackURLScheme: "BUNDLE") { callbackURL, error in
        guard callbackURL != nil else {
            if let error = error {
                return print("Error during authentication: \(error.localizedDescription)")
            }
            return
        }

        // Processes the callback URL to check whether authentication succeeded
        session?.cancel()
        isAuthenticated = true
    }

    session?.presentationContextProvider = idPayController
    session?.prefersEphemeralWebBrowserSession = true
    session?.start()
}
```

:::danger
Denken Sie daran, die URL `URL_AUTHENTICATION` durch die in Ihrer Transaktion empfangene Authentifizierungs-URL zu ersetzen sowie das `callbackURLScheme` `BUNDLE` durch die beim Erstellen Ihrer Transaktion bereitgestellte Weiterleitung (wir empfehlen die Verwendung des Bundle Identifier Ihrer App).
:::

:::note
Es ist wichtig, `prefersEphemeralWebBrowserSession` auf `true` zu setzen, um eine eindeutige Authentifizierung pro Transaktion sicherzustellen.
:::

:::note
Für die ordnungsgemäße Funktion sind einige Berechtigungen erforderlich, wie zum Beispiel:
- Kamera
- Standortermittlung
:::

Um mehr zu erfahren, empfehlen wir, die offizielle [ASWebAuthenticationSession-Dokumentation](https://developer.apple.com/documentation/authenticationservices/aswebauthenticationsession) zu lesen.