التكامل مع SvelteKit و Auth.js

الهدف الأول هو تطبيق SvelteKit باستخدام Auth.js، مع تدفق رمز التفويض و PKCE والتحقق من state و nonce. القيم أدناه هي نفسها التي تعرضها لوحة التحكم لمشروعك.

١. متغيرات البيئة

انسخ Issuer و Client ID من إعدادات المشروع. يظهر Client secret مرة واحدة عند الإنشاء أو التدوير؛ احفظه في خادمك فقط.

.env
AUTH_VAUTH_ISSUER="https://<your-vauth-host>/api/auth"
AUTH_VAUTH_CLIENT_ID="<client-id>"
AUTH_VAUTH_CLIENT_SECRET="<client-secret>"

٢. عنوان العودة

سجّل عنوان العودة التالي في المشروع بالضبط كما يستخدمه Auth.js. استخدم HTTPS في الإنتاج؛ HTTP مسموح لعناوين localhost أثناء التطوير فقط.

Redirect URI
https://<your-app-host>/auth/callback/vauth

٣. مزوّد OIDC في Auth.js

يكتشف Auth.js نقاط النهاية من Issuer ويطلب النطاق openid profile email فقط. لا يُعرض أي رمز وصول أو تحديث في بيانات الصفحة.

src/hooks.server.ts
import { SvelteKitAuth } from '@auth/sveltekit';
import { env } from '$env/dynamic/private';
export const { handle, signIn, signOut } = SvelteKitAuth({
  providers: [
    {
      id: 'vauth',
      name: 'VAuth',
      type: 'oidc',
      issuer: env.AUTH_VAUTH_ISSUER,
      clientId: env.AUTH_VAUTH_CLIENT_ID,
      clientSecret: env.AUTH_VAUTH_CLIENT_SECRET,
      checks: ['pkce', 'state', 'nonce'],
      authorization: { params: { scope: 'openid profile email' } }
    }
  ]
});
// See examples/sveltekit-authjs for the runnable app and session/logout behavior.

ما بعد الدخول

تطبيقك مسؤول عن صلاحيات مستخدميه وبياناته وجلساته المحلية. تسجيل الخروج من تطبيقك مستقل عن إلغاء جلسات VAuth؛ راجع صفحة المستخدمين والجلسات. يحتاج أي إطار عمل إضافي إلى تحقق مستقل قبل إعلان دعمه.