Migration von RainbowKit SIWE zu NextAuth v5
Das @rainbow-me/rainbowkit-siwe-next-auth-Paket von RainbowKit unterstützt jetzt NextAuth v5. Dies ist ein breaking Upgrade für Apps, die den NextAuth SIWE Adapter nutzen, da NextAuth seine Serverkonfigurations-API, Session-Hilfe-API und den internen CSRF-Ablauf geändert hat.
NextAuth.js ist jetzt Teil des umfassenderen Auth.js Projekts. Der Paketname bleibt next-auth und die offizielle NextAuth.js Dokumentation ist weiterhin unter next-auth.js.org verfügbar. Dieser Leitfaden verwendet die heutigen next-auth Paketnamen, während auf die Auth.js Umstellung hingewiesen wird, wo diese Cookie-Namen und v5 APIs betrifft.
Folgen Sie den untenstehenden Schritten, wenn Ihre App derzeit @rainbow-me/rainbowkit-siwe-next-auth mit NextAuth v4 verwendet.
1. Aktualisieren Sie die Abhängigkeiten
Installieren Sie die von RainbowKit unterstützte Version des NextAuth v5-Pakets.
2. Aktualisieren Sie Ihre NextAuth-Serverkonfiguration
NextAuth v5, dokumentiert als Teil des Auth.js-Projekts, verwendet den Typ NextAuthConfig, den Export des Credentials-Anbieters und Helfer, die von NextAuth(authOptions) zurückgegeben werden.
Auth.js empfiehlt die Umgebungsvariablen AUTH_URL und AUTH_SECRET. Wenn Sie bereits eine NextAuth v4-Bereitstellung mit NEXTAUTH_URL und NEXTAUTH_SECRET haben, behalten Sie diese als Fallback während der Migration bei.
Exportieren Sie für App-Router-Route-Handler die zurückgegebenen GET- und POST-Handler.
Für API-Routen des Seiten-Routers übergeben Sie Ihre v5 authOptions an NextAuth.
3. Aktualisieren Sie serverseitige Sitzungslesungen
Wenn Sie die authentifizierte Adresse in getServerSideProps lesen, wechseln Sie von v4-Sitzungshelfern zu dem v5 auth Helfer, der von Ihrer Authentifizierungskonfiguration exportiert wird.
Übergeben Sie req und res separat. Die Übergabe des vollständigen GetServerSidePropsContext-Objekts an auth wird von den v5-Überladungen nicht unterstützt.
4. Aktualisieren Sie die SIWE-Nonce-Validierung
In der v4-Implementierung verglichen RainbowKit-Beispiele die SIWE-Nonce mit getCsrfToken innerhalb von authorize.
In NextAuth v5 erhält der Credentials-Anbieter das verifizierte CSRF-Token als credentials.csrfToken, nachdem NextAuth das CSRF-Cookie der Anfrage validiert hat.
NextAuth v5-interne Cookies verwenden das authjs-Präfix von Auth.js, einschließlich authjs.csrf-token oder __Host-authjs.csrf-token, je nach Sicherheitseinstellungen der Cookies. Sie sollten diese Cookies nicht selbst analysieren müssen für den SIWE-Abfluss von RainbowKit.
5. Geben Sie die authentifizierte Adresse in der Sitzung zurück
Wenn Ihre App session.address liest, behalten Sie die Zuordnung des JWT-Themas zur Sitzung in Ihren NextAuth-Rückrufen bei.
Sie können die vollständige NextAuth v5-Einrichtung im with-next-siwe-next-auth Beispiel sehen.
Wenn Sie auch von einer älteren RainbowKit SIWE-Integration aktualisieren, überprüfen Sie das 0.5.0-Änderungsprotokoll für die viem/siwe-Migration und das 0.3.0-Änderungsprotokoll für die frühere getCsrfToken-Anfrageform-Änderung.