Alexa Smart Home Skill: Account Linking schlägt fehl, obwohl OAuth‑Flow erfolgreich (Code kommt an)

Hallo zusammen,

ich versuche aktuell, einen eigenen Alexa Smart Home Skill mit meiner selbst gehosteten Home Assistant Instanz zu verknüpfen, so wie Simon s gezeigt hat. Ich hänge beim Account Linking fest. Vielleicht hat jemand das schon einmal so gesehen oder eine Idee, ob das Problem eher bei HA oder bei Amazon liegt.​

Setup

  • Home Assistant: selbst gehostet, per HTTPS über eigene Domain erreichbar (https://example.com)

  • Alexa Skill: Typ „Smart Home“, Region EU

  • Account Linking im Alexa Developer Portal:

    • Grant Type: Authorization Code Grant

    • Authorization URI: https://example.com/auth/authorize

    • Access Token URI: https://example.com/auth/token

    • Client ID: https://layla.amazon.com/ (EU)

    • Client authentication: „Credentials in request body“

    • Scope: smart_home

    • PKCE: deaktiviert

Home Assistant Konfiguration

In configuration.yaml habe ich aktuell nur:

alexa:
  smart_home:
    locale: de-DE
    filter:
      include_entities:
        - light.kugel

Kein endpoint:, keine alten YAML‑Reste etc.​

Beobachtetes Verhalten

  1. Ich starte die Kontoverknüpfung in der Alexa‑App.

  2. Ich werde korrekt auf die HA‑Loginseite umgeleitet (https://example.com/auth/authorize?...).

  3. Login in HA funktioniert, danach leitet HA auf eine Amazon‑URL (z. B. https://layla.amazon.com/...) mit einem code= im Query‑String zurück.

  4. Wenn ich dieselbe auth/authorize?...‑URL aus der Alexa‑App in einem privaten Browserfenster öffne und den Flow manuell durchspiele, bekomme ich ebenfalls zuverlässig eine Amazon‑URL mit code zurück. Aus HA‑Sicht sieht der OAuth‑Flow also korrekt aus.

  5. In der Alexa‑App schlägt die Kontoverknüpfung trotzdem mit der generischen Meldung „Konto konnte nicht verknüpft werden“ fehl.

Zwischendurch hatte ich beim Herumprobieren mal „Invalid redirect URI“ und „Von vorne beginnen“ von HA gesehen, das bekomme ich inzwischen durch das saubere Setup und einen frischen Inkognito‑Flow aber nicht mehr reproduziert – aktuell ist das Verhalten stabil wie oben beschrieben.​

Meine Interpretation

  • Da HA nach erfolgreichem Login einen Code an Amazon liefert und ich den Flow im Browser 1:1 nachstellen kann, scheint /auth/authorize auf HA‑Seite korrekt zu funktionieren.

  • Es wirkt so, als ob Alexa den Code zwar erhält, aber beim Token‑Exchange oder einer internen Validierung scheitert und daher die Kontoverknüpfung abbricht.

Fragen an die Runde

  • Seht ihr in der oben beschriebenen Konfiguration (HA + Alexa Developer Portal) irgendetwas, was seit neueren HA‑Versionen oder seit Änderungen bei Amazon nicht mehr passt?

  • Gibt es bekannte Probleme oder Workarounds bei eigenen Smart‑Home‑Skills mit Home Assistant, wenn der Code‑Flow zwar funktioniert, aber Alexa die Verknüpfung trotzdem verweigert?

  • Sollte die Konfiguration aus HA‑Sicht so in Ordnung sein, würde ich das Ganze als Bug/Problem bei Amazon einstufen und ein Ticket beim Developer‑Support eröffnen – bestätigt ihr diese Einschätzung?

Vielen Dank schon mal für jeden Hinweis!

Kurzes Update von meiner Seite:

Ich habe inzwischen ein Ticket beim Amazon Developer Support eröffnet, weil aus HA‑Sicht alles sauber aussieht:

  • https://example.com/ ist von außen per HTTPS auf Port 443 erreichbar und zeigt direkt auf die HA‑Loginseite.​

  • Der OAuth‑Flow liefert im Inkognito‑Test zuverlässig einen code an eine Amazon‑URL zurück.​

  • In Home Assistant habe ich das Logging auf debug für homeassistant.components.http und homeassistant.auth gestellt; beim Linking‑Versuch sehe ich dort keine Fehler, nur normale Auth‑Einträge.

Ich habe heute zwei neue Verknüpfungsversuche durchgeführt:

  • Versuch 1: Start 2026‑03‑17 18:58:00 CET, kurz danach wieder die Fehlermeldung in der Alexa‑App.

  • Versuch 2: Start 2026‑03‑17 19:00:00 CET, identisches Verhalten.

Diese Zeitpunkte habe ich Amazon mitgegeben, damit sie ihre Backend‑Logs für meinen Skill genauer prüfen können. Ich melde mich hier wieder, sobald eine Rückmeldung von Amazon vorliegt.

HEUREKA - Lösung gefunden: Cloudflare Geo-Block hat Amazons Token-Exchange geblockt

Nach ausführlicher Analyse konnte das Problem identifiziert werden. Die Ursache war nicht auf der Home-Assistant-Seite, sondern in der Cloudflare-Konfiguration:

Ursache:
Ich hatte in Cloudflare eine WAF-Regel aktiv, die alle Zugriffe aus dem Ausland blockt. Amazons Backend schickt den Token-Exchange-Request (POST /auth/token) aus AWS eu-west-1 (Irland) – also einer ausländischen IP – und wurde dadurch stillschweigend geblockt, ohne dass HA oder Cloudflare selbst einen sichtbaren “Fehler” geloggt haben.

Symptom:

  • Die HA-Loginseite war erreichbar (Browser-Request aus Deutschland).

  • Der OAuth-Flow (authorize → code → redirect) funktionierte korrekt.

  • Im HA-Log gab es keine Fehler – weil der Token-Request gar nicht erst ankam.

  • Im Cloudflare-Log gab es ebenfalls keinen Eintrag für die Alexa-Linking-Versuche.

Lösung:
In Cloudflare eine neue WAF-Regel vor der Länder-Block-Regel erstellt:

  • Bedingung: http.request.uri.path eq "/auth/token"

  • Aktion: Skip → All remaining custom rules

  • Position: First (Priorität vor der Länder-Block-Regel)

Damit kann Amazons Backend den Token-Exchange durchführen, während der allgemeine Länder-Block für alle anderen Pfade weiterhin aktiv bleibt.

Hinweis für andere Nutzer:
Wer Cloudflare mit einem Geo-Block oder ähnlichen WAF-Regeln nutzt, sollte /auth/token (und ggf. auch /auth/authorize) explizit davon ausnehmen.

1 „Gefällt mir“

Abschließendes Update

Nachdem das Account-Linking funktioniert hat, hat Alexa leider keine neuen Geräte gefunden.

Gelöst werden konnte das durch eine angepasste WAF-Regel (Priorität 1, vor der Geo-Block-Regel) mit folgender Expression:

  • Bedingung : http.request.uri.path eq "/auth/token" or http.request.uri.path eq "/api/alexa/smart_home"

  • Aktion: Skip → All remaining custom rules

Nach dieser Korrekturen funktioniert sowohl das Account-Linking als auch die Geräteerkennung problemlos

1 „Gefällt mir“