Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
auth — واجهة برمجة تطبيقات (API) قائمة على JWT لإدارة المستخدمين وإصدار رموز JWT. | Kitploit
أدوات/GitHubGitHub/supabase/auth
المصادقة والترخيصإدارة الهويةإدارة الهوية والوصول (IAM)المصادقة
GitHubsupabase/auth

auth

واجهة برمجة تطبيقات (API) قائمة على JWT لإدارة المستخدمين وإصدار رموز JWT.

عرض المستودعالموقع الإلكتروني
2.5k745منذ 3 أيامتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

Auth - المصادقة وإدارة المستخدمين من Supabase

Coverage Status

Auth هو خادم إدارة مستخدمين ومصادقة مكتوب بلغة Go يدعم ميزات Supabase مثل:

  • إصدار JWTs
  • أمان مستوى الصفوف مع PostgREST
  • إدارة المستخدمين
  • تسجيل الدخول بالبريد الإلكتروني وكلمة المرور والرابط السحري ورقم الهاتف
  • تسجيل الدخول عبر موفري خارجيين (Google, Apple, Facebook, Discord, ...)

وهو مبني في الأصل على قاعدة الشيفرة الممتازة GoTrue من Netlify، ومع ذلك فقد تباعد الاثنان بشكل كبير في الميزات والإمكانيات.

إذا كنت ترغب في المساهمة في المشروع، فيرجى الرجوع إلى دليل المساهمة.

جدول المحتويات

  • بدء سريع
  • التشغيل في الإنتاج
  • الإعدادات
  • نقاط النهاية

بدء سريع

أنشئ ملف .env لتخزين متغيرات البيئة المخصصة الخاصة بك. انظر example.env

  1. شغّل قاعدة بيانات Postgres المحلية في حاوية Postgres: docker-compose -f docker-compose-dev.yml up postgres
  2. ابنِ الملف الثنائي auth: make build . يجب أن ترى مخرجات مثل:```bash go build -ldflags "-X github.com/supabase/auth/cmd.Version=git rev-parse HEAD" GOOS=linux GOARCH=arm64 go build -ldflags "-X github.com/supabase/auth/cmd.Version=git rev-parse HEAD" -o gotrue-arm64
root@kitploit:~
3. نفّذ الملف الثنائي auth: `./auth`

### إذا كان Docker مثبّتًا لديك

أنشئ ملف `.env.docker` لتخزين متغيرات البيئة المخصصة الخاصة بك. انظر [`example.docker.env`](https://github.com/supabase/auth/blob/HEAD/example.docker.env)

1. `make build`
2. `make dev`
3. يجب أن يعرض `docker ps` حاويتي Docker (`auth-auth-1` و`auth-postgres-1`)
4. هذا كل شيء! قم بزيارة [نقطة فحص الصحة](http://localhost:9999/health) للتأكد من أن auth يعمل.

## التشغيل في الإنتاج

تشغيل خادم مصادقة في الإنتاج ليس بالأمر السهل. نوصي باستخدام [Supabase Auth](https://supabase.com/auth) الذي يحصل على تحديثات أمنية منتظمة.

بخلاف ذلك، يرجى التأكد من إعداد عملية لتحديث الإصدار الأحدث على الفور. يمكنك القيام بذلك بمتابعة هذا المستودع، وتحديدًا قسمي [الإصدارات](https://github.com/supabase/auth/releases) و[النشرات الأمنية](https://github.com/supabase/auth/security/advisories).

### التوافق العكسي

يستخدم Auth نظام [الإصدارات الدلالية](https://semver.org). فيما يلي بعض التوضيحات الإضافية حول ضمانات التوافق العكسي:

**توافق واجهة برمجة التطبيقات Go**

ليست Auth مصممة للاستخدام كمكتبة Go. لا توجد ضمانات على توافق واجهة برمجة التطبيقات الخلفي عند استخدامها بهذه الطريقة بغض النظر عن أي رقم إصدار يتغير.

**التصحيح**

التغييرات في إصدار التصحيح تضمن التوافق العكسي مع:

- كائنات قاعدة البيانات (الجداول، الأعمدة، الفهارس، الدوال).
- REST API
- بنية JWT
- الإعدادات

أمثلة مضمونة:

- لن يغيّر العمود نوعه.
- لن يغيّر الجدول مفتاحه الأساسي.
- لن تتم إزالة فهرس.
- لن تتم إزالة قيد التفرد.
- لن تتم إزالة REST API.
- ستعمل وسائط REST APIs بشكل مكافئ كما في السابق (أو أفضل، إذا تم إصلاح خطأ برمجي).
- لن تتغير الإعدادات.

أمثلة غير مضمونة:

- قد يضيف الجدول أعمدة جديدة.
- قد تتم إعادة ترتيب الأعمدة في الجدول.
- قد تتم إزالة القيود غير الفريدة (فحوصات مستوى قاعدة البيانات، القيم الفارغة، القيم الافتراضية).
- قد يضيف JWT خصائص جديدة.

**الإصدار الثانوي**

التغييرات في الإصدار الثانوي تضمن التوافق العكسي مع:

- REST API
- بنية JWT
- الإعدادات

لن يُستثنى من هذه الضمانات إلا عند اكتشاف مشكلات أمنية خطيرة لا يمكن معالجتها بأي طريقة أخرى.

أمثلة مضمونة:

- قد يتم إهمال الواجهات البرمجية الحالية (APIs) لكنها تستمر في العمل خلال الإصدارات الثانوية القليلة القادمة.
- قد تصبح تغييرات الإعدادات قديمة لكنها تستمر في العمل لعدة إصدارات ثانوية قادمة.
- سيتم قبول JWTs الصادرة بالفعل، لكن قد تكون JWTs الجديدة ببنية مختلفة (وإن كانت مشابهة عادةً).

أمثلة غير مضمونة:

- إزالة حقول JWT بعد إشعار الإهمال.
- إزالة بعض واجهات API بعد إشعار الإهمال.
- إزالة تسجيل الدخول عبر المزودين الخارجيين بعد إشعار الإهمال.
- حذف أو اقتطاع أو تغييرات كبيرة في مخطط الجداول أو الفهارس أو العروض أو الدوال.

نهدف إلى توفير إشعار إهمال في سجلات التنفيذ لما لا يقل عن إصدارين رئيسيين أو أسبوعين إذا صدرت إصدارات متعددة. سيتم ضمان التوافق طالما كان الإشعار ساريًا.

**الإصدار الرئيسي**

التغييرات في الإصدار الرئيسي لا تضمن أي توافق عكسي مع الإصدارات السابقة.

### الميزات الموروثة

بعض الميزات الموروثة من قاعدة شيفرة Netlify غير مدعومة من Supabase وقد تتم إزالتها دون إشعار مسبق في المستقبل. هذه قائمة شاملة بتلك الميزات:

1. تعدد الإيجارات عبر جدول `instances` أي معامل الإعداد `GOTRUE_MULTI_INSTANCE_MODE`.
2. مستخدم النظام (مستخدم UUID الصفري).
3. المشرف الفائق عبر عمود `is_super_admin`.
4. معلومات المجموعة في JWTs عبر `GOTRUE_JWT_ADMIN_GROUP_NAME` وحقول إعداد أخرى.
5. توقيع JWT. يدعم Supabase Auth المفاتيح غير المتماثلة (RS256 افتراضيًا؛ ECC/Ed25519 اختياري). لا يزال HS256 مدعومًا للتوافق، لكن يُوصى بالترحيل إلى المفاتيح غير المتماثلة لسهولة التحقق والتدوير. سيتم الإعلان عن عمليات الإهمال المستقبلية في سجل التغييرات. راجع [مفاتيح توقيع JWT](https://supabase.com/docs/guides/auth/signing-keys) ودليل [JWTs](https://supabase.com/docs/guides/auth/jwts) للتفاصيل.

لاحظ أن هذه القائمة ليست شاملة وقد تتغير.

### أفضل الممارسات عند الاستضافة الذاتية

فيما يلي بعض أفضل الممارسات التي يجب اتباعها عند الاستضافة الذاتية لضمان التوافق العكسي مع Auth:

1. لا تعدّل مخطط قاعدة البيانات الذي يديره Auth. يمكنك الاطلاع على جميع الترحيلات في دليل `migrations`.
2. لا تعتمد على مخطط قاعدة البيانات وبنية البيانات فيها. استخدم دائمًا واجهات Auth البرمجية وJWTs لاستنتاج المعلومات عن المستخدمين.
3. شغّل Auth دائمًا خلف وكيل يدعم TLS مثل موازن التحميل أو CDN أو nginx أو أي برنامج مشابه.

## الإعدادات

يمكنك إعداد Auth باستخدام ملف إعدادات باسم `.env`، أو متغيرات البيئة، أو مزيج من الاثنين معًا. تُسبق متغيرات البيئة بالبادئة `GOTRUE_`، وستكون لها دائمًا الأولوية على القيم المقدمة عبر الملف.

### المستوى الأعلى```properties
GOTRUE_SITE_URL=https://example.netlify.com/

SITE_URL - string مطلوب

الرابط الأساسي الذي يستضيف موقعك. يُستخدم حاليًا مع إعدادات أخرى لإنشاء روابط تُستخدم في رسائل البريد الإلكتروني. أي URI يشترك في المضيف مع SITE_URL هو قيمة مسموح بها لمعاملات redirect_to (انظر /authorize وغيرها).

URI_ALLOW_LIST - string

قائمة مفصولة بفواصل من URIs (مثل "https://foo.example.com,https://*.foo.example.com,https://bar.example.com") مسموح بها كوجهات redirect_to صالحة. القيمة الافتراضية هي []. تدعم مطابقة أحرف البدل عبر globbing. على سبيل المثال https://*.foo.example.com سيسمح بقبول https://a.foo.example.com و https://b.foo.example.com. يتم دعم globbing أيضًا على النطاقات الفرعية. على سبيل المثال https://foo.example.com/* سيسمح بقبول https://foo.example.com/page1 و https://foo.example.com/page2.

لمزيد من أنماط glob الشائعة، راجع الرابط التالي.

OPERATOR_TOKEN - string وضع متعدد المثيلات فقط

السر المشترك مع مشغّل (عادةً Netlify) لهذه الخدمة المصغّرة. يُستخدم للتحقق من أن الطلبات قد مرت عبر المشغّل وأن قيم الحمولة يمكن الوثوق بها.

DISABLE_SIGNUP - bool

عند تعطيل التسجيل، الطريقة الوحيدة لإنشاء مستخدمين جدد هي عبر الدعوات. القيمة الافتراضية هي false، أي أن جميع عمليات التسجيل مفعّلة.

GOTRUE_EXTERNAL_EMAIL_ENABLED - bool

استخدم هذا لتعطيل التسجيل عبر البريد الإلكتروني (لا يزال بإمكان المستخدمين استخدام موفري OAuth الخارجيين للتسجيل / تسجيل الدخول)

GOTRUE_EXTERNAL_PHONE_ENABLED - bool

استخدم هذا لتعطيل التسجيل عبر الهاتف (لا يزال بإمكان المستخدمين استخدام موفري OAuth الخارجيين للتسجيل / تسجيل الدخول)

GOTRUE_RATE_LIMIT_HEADER - string

الترويسة التي يتم على أساسها تحديد معدل الطلبات لنقطة النهاية /token. من المتوقع أن يتم تعيين هذه الترويسة بواسطة وكيل وسيط موثوق (مثل Kong أو Envoy). الترويسات مثل x-forwarded-for قابلة للانتحال ولا يمكن الوثوق بها لتحديد معدل الطلبات عندما يتم توفيرها مباشرة من العميل.

GOTRUE_RATE_LIMIT_EMAIL_SENT - string

تحديد معدل عدد رسائل البريد الإلكتروني المرسلة في الساعة على نقاط النهاية التالية: /signup, /invite, /magiclink, /recover, /otp, و /user.

GOTRUE_PASSWORD_MIN_LENGTH - int

الحد الأدنى لطول كلمة المرور، الافتراضي هو 6.

GOTRUE_PASSWORD_REQUIRED_CHARACTERS - سلسلة من مجموعات الأحرف مفصولة بـ :. يجب أن تحتوي كلمة المرور على حرف واحد على الأقل من كل مجموعة ليتم قبولها. لاستخدام الحرف : قم بتخطيه بـ \.

GOTRUE_SECURITY_REFRESH_TOKEN_ROTATION_ENABLED - bool

إذا كان تبديل رمز التحديث مفعّلاً، ستكتشف المصادقة تلقائيًا المحاولات الخبيثة لإعادة استخدام رمز تحديث تم إبطاله. عند اكتشاف محاولة خبيثة، يقوم GoTrue فورًا بإبطال جميع الرموز المميزة المنحدرة من الرمز المخالف.

GOTRUE_SECURITY_REFRESH_TOKEN_REUSE_INTERVAL - string

هذا الإعداد قابل للتطبيق فقط إذا كان GOTRUE_SECURITY_REFRESH_TOKEN_ROTATION_ENABLED مفعّلاً. تسمح فترة إعادة الاستخدام لرمز التحديث بتبادل رمز التحديث عدة مرات خلال الفترة لدعم مشاكل التزامن أو عدم الاتصال. خلال فترة إعادة الاستخدام، لن تعتبر المصادقة استخدام رمز مُبطَل محاولة خبيثة وستقوم ببساطة بإرجاع رمز التحديث الفرعي.

يمكن إعادة استخدام رمز التحديث المُبطَل السابق فقط. استخدام رمز تحديث قديم قبل رمز التحديث الحالي الصحيح بفترة طويلة سيؤدي إلى تشغيل كشف إعادة الاستخدام.

API```properties

GOTRUE_API_HOST=localhost PORT=9999 API_EXTERNAL_URL=http://localhost:9999

root@kitploit:~
`API_HOST` - `string`

اسم المضيف الذي سيتم الاستماع عليه.

`PORT` (no prefix) / `API_PORT` - `number`

رقم المنفذ الذي سيتم الاستماع عليه. الافتراضي هو `8081`.

`API_ENDPOINT` - `string` _وضع متعدد المثيلات فقط_

يتحكم في نقطة النهاية التي يمكن لـ Netlify الوصول إلى هذه الـ API من خلالها.

`API_EXTERNAL_URL` - `string` **مطلوب**

عنوان URL الذي يمكن من خلاله الوصول إلى GoTrue.

`REQUEST_ID_HEADER` - `string`

إذا كنت ترغب في توارث معرّف الطلب من الطلب الوارد، فحدد الاسم في هذه القيمة.

### قاعدة البيانات```properties
GOTRUE_DB_DRIVER=postgres
DATABASE_URL=root@localhost/auth

DB_DRIVER - string مطلوب

يختار لهجة قاعدة البيانات التي تريدها. يجب أن يكون postgres.

DATABASE_URL (بدون بادئة) / DB_DATABASE_URL - string مطلوب

سلسلة الاتصال بقاعدة البيانات.

GOTRUE_DB_MAX_POOL_SIZE - int

يحدد أقصى عدد من الاتصالات المفتوحة بقاعدة البيانات. الافتراضي هو 0، وهو ما يعادل عدد اتصالات "غير محدود".

DB_NAMESPACE - string

يضيف بادئة إلى جميع أسماء الجداول.

ملاحظة حول الترحيلات

يتم تطبيق الترحيلات تلقائيًا عند تشغيل ./auth. ومع ذلك، لديك أيضًا خيار إعادة تشغيل الترحيلات عبر الطرق التالية:

  • إذا تم البناء محليًا: ./auth migrate
  • باستخدام Docker: docker run --rm auth gotrue migrate

التسجيل```properties

LOG_LEVEL=debug # available without GOTRUE prefix (exception) GOTRUE_LOG_FILE=/var/log/go/auth.log

root@kitploit:~
`LOG_LEVEL` - `string`

يتحكم في مستويات السجل التي يتم إخراجها. اختر من `panic`، `fatal`، `error`، `warn`، `info`، أو `debug`. الافتراضي هو `info`.

`LOG_FILE` - `string`

إذا كنت تريد كتابة السجلات إلى ملف، فاضبط `log_file` على مسار ملف صالح.

### المراقبة

يحتوي Auth على مراقبة أساسية مدمجة. وهو قادر على تصدير
[OpenTelemetry](https://opentelemetry.io) مقاييس وتتبّعات إلى مُجمِّع.

#### التتبّع

لتفعيل التتبّع، قم بتهيئة هذه المتغيرات:

`GOTRUE_TRACING_ENABLED` - `bool`

`GOTRUE_TRACING_EXPORTER` - `string` يدعم `opentelemetry` فقط

تأكد أيضًا من تهيئة إعدادات [مُصدِّر
OpenTelemetry](https://opentelemetry.io/docs/reference/specification/protocol/exporter/)
لمُجمِّعك أو خدمتك.

على سبيل المثال، إذا كنت تستخدم
[Honeycomb.io](https://docs.honeycomb.io/getting-data-in/opentelemetry/go-distro/#using-opentelemetry-without-the-honeycomb-distribution)
فيجب عليك ضبط متغيرات OpenTelemetry OTLP القياسية هذه:```
OTEL_SERVICE_NAME=auth
OTEL_EXPORTER_OTLP_PROTOCOL=grpc
OTEL_EXPORTER_OTLP_ENDPOINT=https://api.honeycomb.io:443
OTEL_EXPORTER_OTLP_HEADERS="x-honeycomb-team=<API-KEY>,x-honeycomb-dataset=auth"

المقاييس

لتفعيل المقاييس، قم بتهيئة هذه المتغيرات:

GOTRUE_METRICS_ENABLED - boolean

GOTRUE_METRICS_EXPORTER - string فقط opentelemetry و prometheus مدعومة

تأكد أيضًا من تهيئة إعدادات OpenTelemetry Exporter لجامع البيانات أو الخدمة الخاصة بك.

إذا كنت تستخدم مُصدّر prometheus، يمكن تهيئة مضيف الخادم والمنفذ باستخدام متغيرات OpenTelemetry القياسية هذه:

OTEL_EXPORTER_PROMETHEUS_HOST - عنوان IP، الافتراضي 0.0.0.0

OTEL_EXPORTER_PROMETHEUS_PORT - رقم المنفذ، الافتراضي 9100

يتم تصدير المقاييس على المسار / على الخادم.

إذا كنت تستخدم مُصدّر opentelemetry، فسيتم دفع المقاييس إلى المجمّع.

على سبيل المثال، إذا كنت تستخدم Honeycomb.io، فيجب عليك تعيين متغيرات OTLP القياسية لـ OpenTelemetry هذه:``` OTEL_SERVICE_NAME=auth OTEL_EXPORTER_OTLP_PROTOCOL=grpc OTEL_EXPORTER_OTLP_ENDPOINT=https://api.honeycomb.io:443 OTEL_EXPORTER_OTLP_HEADERS="x-honeycomb-team=,x-honeycomb-dataset=auth"

root@kitploit:~
لاحظ أن Honeycomb.io يتطلب خطة مدفوعة لاستيعاب المقاييس.

إذا كنت بحاجة إلى تصحيح أخطاء متعلقة بعدم دفع التتبعات أو المقاييس، يمكنك
تعيين `DEBUG=true` للحصول على مزيد من الرؤى من OpenTelemetry SDK.

#### سمات الموارد المخصصة

عند استخدام مُصدِّر التتبعات أو المقاييس الخاص بـ OpenTelemetry، يمكنك تعريف
سمات موارد مخصصة باستخدام [متغير البيئة القياسي `OTEL_RESOURCE_ATTRIBUTES`](https://opentelemetry.io/docs/reference/specification/resource/sdk/#specifying-resource-information-via-an-environment-variable).

يتم توفير سمة افتراضية `auth.version` تحتوي على إصدار البناء.

#### تتبع مسارات HTTP

يتم تتبع جميع استدعاءات HTTP إلى Auth API. تستخدم المسارات النسخة المُعرَّفة
بمعاملات من المسار، ويمكن العثور على قيم معاملات المسار كسمة
`http.route.params.<route-key>` الخاصة بـ span.

على سبيل المثال، الطلب التالي:```
GET /admin/users/4acde936-82dc-4552-b851-831fb8ce0927/

سيتم تتبعه على النحو التالي:``` http.method = GET http.route = /admin/users/{user_id} http.route.params.user_id = 4acde936-82dc-4552-b851-831fb8ce0927

root@kitploit:~
#### مقاييس وقت تشغيل Go و HTTP

جميع مقاييس وقت تشغيل Go مكشوفة. كما يتم جمع بعض مقاييس HTTP افتراضيًا.

### JSON Web Tokens (JWT)```properties
GOTRUE_JWT_SECRET=supersecretvalue
GOTRUE_JWT_EXP=3600
GOTRUE_JWT_AUD=netlify

JWT_SECRET - string مطلوب

السر المستخدم لتوقيع رموز JWT.

JWT_EXP - number

مدة صلاحية الرموز بالثواني. الافتراضي هو 3600 (ساعة واحدة).

JWT_AUD - string

الجمهور الافتراضي لـ JWT. استخدم الجماهير لتجميع المستخدمين.

JWT_ADMIN_GROUP_NAME - string

اسم مجموعة المشرف (إذا كانت مفعّلة). الافتراضي هو admin.

JWT_DEFAULT_GROUP_NAME - string

المجموعة الافتراضية التي سيتم تعيين جميع المستخدمين الجدد إليها.

مزودو المصادقة الخارجية

نحن ندعم كلاً من apple وazure وbitbucket وdiscord وfacebook وfigma وgithub وgitlab وgoogle وkeycloak وlinkedin وnotion وsnapchat وspotify وslack وtwitch و و للمصادقة الخارجية.

استخدم هذه الأسماء كمفاتيح تحت external لتهيئة كل مزود على حدة.```properties GOTRUE_EXTERNAL_GITHUB_ENABLED=true GOTRUE_EXTERNAL_GITHUB_CLIENT_ID=myappclientid GOTRUE_EXTERNAL_GITHUB_SECRET=clientsecretvaluessssh GOTRUE_EXTERNAL_GITHUB_REDIRECT_URI=http://localhost:3000/callback

root@kitploit:~
لا يلزم وجود موفّرين خارجيين، لكن يجب عليك توفير القيم المطلوبة إذا اخترت تفعيل أيٍّ منها.

`EXTERNAL_X_ENABLED` - `bool`

ما إذا كان هذا الموفّر الخارجي مفعّلًا أم لا

`EXTERNAL_X_CLIENT_ID` - `string` **مطلوب**

معرّف عميل OAuth2 المسجّل لدى الموفّر الخارجي.

`EXTERNAL_X_SECRET` - `string` **مطلوب**

السر الخاص بالعميل (Client Secret) الخاص بـ OAuth2 والذي يقدّمه الموفّر الخارجي عند تسجيلك.

`EXTERNAL_X_REDIRECT_URI` - `string` **مطلوب**

الرابط (URI) الذي سيعيد توجيه موفّر OAuth2 إليه مع قيمتَي `code` و`state`.

`EXTERNAL_X_URL` - `string`

الرابط الأساسي المستخدم لإنشاء الروابط الخاصة بطلب التفويض ورموز الوصول. يُستخدم بواسطة `gitlab` و`keycloak`. بالنسبة إلى `gitlab`، تكون القيمة الافتراضية `https://gitlab.com`. أما بالنسبة إلى `keycloak`، فيجب عليك تعيين هذا الحقل إلى نسختك، على سبيل المثال: `https://keycloak.example.com/realms/myrealm`

#### تحصين الشبكة

يؤدي تكوين موفّر مصادقة خارجي إلى جعل Auth يُصدر طلبات HTTP صادرة إلى نقاط نهاية التفويض والرموز ومعلومات المستخدم الخاصة بذلك الموفّر. يُعد تكوين موفّر إمّا عبر إعدادات `GOTRUE_EXTERNAL_*` أو عبر واجهة برمجة تطبيقات الإدارة إجراءً إداريًا، ويعني ذلك ضمناً الثقة بالمضيفين والروابط التي سيتم الاتصال بها.

يجب تحصين الشبكة التي يعمل عليها Auth بحيث لا تتمكن هذه الاتصالات الصادرة من الوصول إلى الموارد الداخلية فقط التي لا تريد كشفها، مثل عناوين `localhost`/الاسترجاع أو نقاط نهاية البيانات الوصفية السحابية (مثل `169.254.169.254`). يكون هذا الأمر أكثر أهمية بالنسبة إلى الموفّرين الذين لديهم نقاط نهاية قابلة للتهيئة أو الاكتشاف من قِبل الإدارة (مثل موفّري OAuth/OIDC المخصصين)، حيث يمكن استخدام رابط تم تكوينه بشكل خاطئ أو ضار للوصول إلى البنية التحتية الداخلية.

#### Apple OAuth

لتجربة المصادقة الخارجية مع Apple محليًا، ستحتاج إلى القيام بما يلي:

1. أعد تعيين localhost إلى \<my_custom_dns \> في ملف `/etc/hosts` لديك.
2. قم بتكوين auth لخدمة حركة مرور HTTPS عبر localhost عن طريق استبدال `ListenAndServe` في [api.go](https://github.com/supabase/auth/blob/HEAD/internal/api/api.go) بـ:   ```
      func (a *API) ListenAndServe(hostAndPort string) {
        log := logrus.WithField("component", "api")
        path, err := os.Getwd()
        if err != nil {
          log.Println(err)
        }
        server := &http.Server{
          Addr:    hostAndPort,
          Handler: a.handler,
        }
        done := make(chan struct{})
        defer close(done)
        go func() {
          waitForTermination(log, done)
          ctx, cancel := context.WithTimeout(context.Background(), time.Minute)
          defer cancel()
          server.Shutdown(ctx)
        }()
        if err := server.ListenAndServeTLS("PATH_TO_CRT_FILE", "PATH_TO_KEY_FILE"); err != http.ErrServerClosed {
          log.WithError(err).Fatal("http server listen failed")
        }
    }
  1. قم بإنشاء ملف crt و key. انظر هنا لمزيد من المعلومات.
  2. قم بإنشاء GOTRUE_EXTERNAL_APPLE_SECRET باتباع هذا المنشور!

البريد الإلكتروني

إرسال البريد الإلكتروني ليس مطلوبًا، لكن يُنصح به بشدة لاستعادة كلمة المرور. إذا تم تفعيله، يجب عليك توفير القيم المطلوبة أدناه.```properties GOTRUE_SMTP_HOST=smtp.mandrillapp.com GOTRUE_SMTP_PORT=587 GOTRUE_SMTP_USER=[email protected] GOTRUE_SMTP_PASS=correcthorsebatterystaple GOTRUE_SMTP_ADMIN_EMAIL=[email protected] GOTRUE_MAILER_SUBJECTS_CONFIRMATION="Please confirm"

root@kitploit:~
`SMTP_ADMIN_EMAIL` - `string` **مطلوب**

عنوان البريد الإلكتروني `From` لجميع الرسائل المرسلة.

`SMTP_HOST` - `string` **مطلوب**

اسم مضيف خادم البريد لإرسال الرسائل عبره.

`SMTP_PORT` - `number` **مطلوب**

رقم المنفذ للاتصال بخادم البريد عليه.

`SMTP_USER` - `string`

إذا كان خادم البريد يتطلب مصادقة، اسم المستخدم لاستخدامه.

`SMTP_PASS` - `string`

إذا كان خادم البريد يتطلب مصادقة، كلمة المرور لاستخدامها.

`SMTP_MAX_FREQUENCY` - `number`

يتحكم في الحد الأدنى من الوقت الذي يجب أن يمر قبل إرسال رسالة تأكيد تسجيل أو إعادة تعيين كلمة مرور أخرى. القيمة هي عدد الثواني. الافتراضي هو 900 (15 دقيقة).

`SMTP_SENDER_NAME` - `string`

يحدد اسم المرسل. الافتراضي هو `SMTP_ADMIN_EMAIL` إذا لم يُستخدم.

`MAILER_AUTOCONFIRM` - `bool`

إذا لم تكن بحاجة إلى تأكيد البريد الإلكتروني، يمكنك ضبط هذا على `true`. الافتراضي هو `false`.

`MAILER_OTP_EXP` - `number`

يتحكم في المدة التي يظل فيها رابط البريد الإلكتروني أو رمز الدخول لمرة واحدة (OTP) صالحًا.

`MAILER_URLPATHS_INVITE` - `string`

مسار URL لاستخدامه في بريد دعوة المستخدم. الافتراضي هو `/verify`.

`MAILER_URLPATHS_CONFIRMATION` - `string`

مسار URL لاستخدامه في بريد تأكيد التسجيل. الافتراضي هو `/verify`.

`MAILER_URLPATHS_RECOVERY` - `string`

مسار URL لاستخدامه في بريد إعادة تعيين كلمة المرور. الافتراضي هو `/verify`.

`MAILER_URLPATHS_EMAIL_CHANGE` - `string`

مسار URL لاستخدامه في بريد تأكيد تغيير البريد الإلكتروني. الافتراضي هو `/verify`.

`MAILER_SUBJECTS_INVITE` - `string`

موضوع البريد الإلكتروني لاستخدامه لدعوة المستخدم. الافتراضي هو `You've been invited`.

`MAILER_SUBJECTS_CONFIRMATION` - `string`

موضوع البريد الإلكتروني لاستخدامه لتأكيد التسجيل. الافتراضي هو `Confirm your email address`.

`MAILER_SUBJECTS_RECOVERY` - `string`

موضوع البريد الإلكتروني لاستخدامه لإعادة تعيين كلمة المرور. الافتراضي هو `Reset your password`.

`MAILER_SUBJECTS_MAGIC_LINK` - `string`

موضوع البريد الإلكتروني لاستخدامه لبريد الرابط السحري. الافتراضي هو `Your sign-in link`.

`MAILER_SUBJECTS_EMAIL_CHANGE` - `string`

موضوع البريد الإلكتروني لاستخدامه لتأكيد تغيير البريد الإلكتروني. الافتراضي هو `Confirm your new email address`.

`MAILER_SUBJECTS_REAUTHENTICATION` - `string`

موضوع البريد الإلكتروني لاستخدامه لإعادة المصادقة. الافتراضي هو `{{ .Token }} is your verification code`.

`MAILER_SUBJECTS_PASSWORD_CHANGED_NOTIFICATION` - `string`

موضوع البريد الإلكتروني لاستخدامه للإشعار بتغيير كلمة المرور. الافتراضي هو `Your password was changed`.

`MAILER_SUBJECTS_EMAIL_CHANGED_NOTIFICATION` - `string`

موضوع البريد الإلكتروني لاستخدامه للإشعار بتغيير البريد الإلكتروني. الافتراضي هو `Your email address was changed`.

`GOTRUE_MAILER_SUBJECTS_PHONE_CHANGED_NOTIFICATION` - `string`

موضوع البريد الإلكتروني لاستخدامه للإشعار بتغيير رقم الهاتف. الافتراضي هو `Your phone number was changed`.

`GOTRUE_MAILER_SUBJECTS_IDENTITY_LINKED_NOTIFICATION` - `string`

موضوع البريد الإلكتروني لاستخدامه للإشعار بربط الهوية. الافتراضي هو `A new sign-in method was linked to your account`.

`GOTRUE_MAILER_SUBJECTS_IDENTITY_UNLINKED_NOTIFICATION` - `string`

موضوع البريد الإلكتروني لاستخدامه للإشعار بإلغاء ربط الهوية. الافتراضي هو `A sign-in method was removed from your account`.

`GOTRUE_MAILER_SUBJECTS_MFA_FACTOR_ENROLLED_NOTIFICATION` - `string`

موضوع البريد الإلكتروني لاستخدامه للإشعار بإضافة طريقة تحقق. الافتراضي هو `A new verification method was added to your account`.

`GOTRUE_MAILER_SUBJECTS_MFA_FACTOR_UNENROLLED_NOTIFICATION` - `string`

موضوع البريد الإلكتروني لاستخدامه للإشعار بإزالة طريقة تحقق. الافتراضي هو `A verification method was removed from your account`.

`MAILER_TEMPLATES_INVITE` - `string`

مسار URL لقالب بريد إلكتروني لاستخدامه عند دعوة مستخدم. (مثل `https://www.example.com/path-to-email-template.html`)
متغيرات `SiteURL` و`Email` و`ConfirmationURL` متاحة.

المحتوى الافتراضي (إذا كان القالب غير متوفر):```html
<h2>You've been invited</h2>

<p>You've been invited to create an account. Follow the link below to accept.</p>
<p><a href="{{ .ConfirmationURL }}">Accept invitation</a></p>

MAILER_TEMPLATES_CONFIRMATION - string

مسار URL لقالب بريد إلكتروني يُستخدم عند تأكيد التسجيل. (مثل: https://www.example.com/path-to-email-template.html) المتغيرات SiteURL وEmail وConfirmationURL متاحة.

المحتوى الافتراضي (إذا كان القالب غير متاح):```html

Confirm your email address

Follow the link below to confirm this email address and finish signing up.

Confirm email address

``` `MAILER_TEMPLATES_RECOVERY` - `string`

مسار URL لقالب بريد إلكتروني يُستخدم عند إعادة تعيين كلمة المرور. (على سبيل المثال: https://www.example.com/path-to-email-template.html) المتغيرات SiteURL وEmail وConfirmationURL متاحة.

المحتوى الافتراضي (إذا كان القالب غير متوفر):```html

Reset your password

We received a request to reset your password. Follow the link below to choose a new one.

Reset password

If you didn't request this, you can safely ignore this email.

``` `MAILER_TEMPLATES_MAGIC_LINK` - `string`

مسار URL لقالب البريد الإلكتروني المستخدم عند إرسال الرابط السحري. (مثال: https://www.example.com/path-to-email-template.html) المتغيرات SiteURL وEmail وConfirmationURL متاحة.

المحتوى الافتراضي (إذا كان القالب غير متاح):```html

Your sign-in link

Follow the link below to sign in. This link expires shortly and can only be used once.

Sign in

``` `MAILER_TEMPLATES_EMAIL_CHANGE` - `string`

مسار URL لقالب بريد إلكتروني يُستخدم عند تأكيد تغيير عنوان البريد الإلكتروني. (على سبيل المثال: https://www.example.com/path-to-email-template.html) المتغيرات SiteURL وEmail وNewEmail وConfirmationURL متاحة.

المحتوى الافتراضي (إذا كان القالب غير متوفّر):```html

Confirm your new email address

Follow the link below to confirm {{ .NewEmail }} as your new email address.

Confirm new email address

If you didn't request this change, you can safely ignore this email.

``` `MAILER_TEMPLATES_REAUTHENTICATION` - `string`

مسار URL لقالب بريد إلكتروني يُستخدم عند إعادة مصادقة مستخدم. (مثال: https://www.example.com/path-to-email-template.html) المتغير Token متاح.

المحتوى الافتراضي (إذا كان القالب غير متوفر):```html

Your verification code

Use the code below to verify your identity. It expires shortly.

{{ .Token }}

``` `MAILER_TEMPLATES_PASSWORD_CHANGED_NOTIFICATION` - `string`

مسار URL لقالب بريد إلكتروني يُستخدم عند إشعار المستخدم بأن كلمة المرور الخاصة به قد تم تغييرها. (على سبيل المثال: https://www.example.com/path-to-email-template.html) متغيرات Email متاحة.

المحتوى الافتراضي (إذا كان القالب غير متاح):```html

Your password was changed

The password for your account was recently changed.

If you didn't make this change, reset your password and contact support immediately.

``` `GOTRUE_MAILER_NOTIFICATIONS_PASSWORD_CHANGED_ENABLED` - `bool`

سواء لإرسال بريد إلكتروني للإشعار عند تغيير كلمة مرور المستخدم. الافتراضي هو false.

MAILER_TEMPLATES_EMAIL_CHANGED_NOTIFICATION - string

مسار URL لقالب بريد إلكتروني يُستخدم عند إشعار المستخدم بأن بريده الإلكتروني قد تم تغييره. (مثال: https://www.example.com/path-to-email-template.html) المتغيرات Email و OldEmail متاحة.

المحتوى الافتراضي (إذا كان القالب غير متاح):```html

Your email address was changed

The email address for your account was changed from {{ .OldEmail }} to {{ .Email }}.

If you didn't make this change, contact support immediately.

``` `GOTRUE_MAILER_NOTIFICATIONS_EMAIL_CHANGED_ENABLED` - `bool`

ما إذا كان سيتم إرسال بريد إلكتروني للإشعار عند تغيير بريد المستخدم الإلكتروني. القيمة الافتراضية هي false.

GOTRUE_MAILER_TEMPLATES_PHONE_CHANGED_NOTIFICATION - string

مسار URL لقالب بريد إلكتروني يُستخدم عند إشعار المستخدم بأن رقم هاتفه قد تم تغييره. (على سبيل المثال https://www.example.com/path-to-email-template.html) المتغيرات Email وPhone وOldPhone متاحة.

المحتوى الافتراضي (إذا كان القالب غير متاح):```html

Your phone number was changed

The phone number for your account was changed from {{ .OldPhone }} to {{ .Phone }}.

If you didn't make this change, contact support immediately.

``` `GOTRUE_MAILER_NOTIFICATIONS_PHONE_CHANGED_ENABLED` - `bool`

ما إذا كان سيتم إرسال بريد إلكتروني للإشعار عند تغيير رقم هاتف المستخدم. الافتراضي هو false.

GOTRUE_MAILER_TEMPLATES_IDENTITY_LINKED_NOTIFICATION - string

مسار URL لقالب بريد إلكتروني يُستخدم عند إشعار المستخدم بأن طريقة تسجيل دخول قد تم ربطها بحسابه. (مثال: https://www.example.com/path-to-email-template.html) المتغيرات Email و Provider متاحة.

المحتوى الافتراضي (إذا كان القالب غير متوفر):```html

A new sign-in method was linked

Your {{ .Provider }} account was linked as a new sign-in method for {{ .Email }}.

If you didn't make this change, contact support immediately.

``` `GOTRUE_MAILER_NOTIFICATIONS_IDENTITY_LINKED_ENABLED` - `bool`

ما إذا كان سيتم إرسال بريد إلكتروني إشباري عند ربط طريقة تسجيل دخول بحساب المستخدم. القيمة الافتراضية هي false.

GOTRUE_MAILER_TEMPLATES_IDENTITY_UNLINKED_NOTIFICATION - string

مسار URL لقالب بريد إلكتروني يُستخدم عند إشعار المستخدم بأن طريقة تسجيل الدخول قد أُزيلت من حسابه. (مثال: https://www.example.com/path-to-email-template.html) المتغيران Email و Provider متاحان.

المحتوى الافتراضي (إذا كان القالب غير متاح):```html

A sign-in method was removed

Your {{ .Provider }} account was removed as a sign-in method for {{ .Email }}.

If you didn't make this change, contact support immediately.

``` `GOTRUE_MAILER_NOTIFICATIONS_IDENTITY_UNLINKED_ENABLED` - `bool`

ما إذا كان سيتم إرسال بريد إلكتروني للإشعار عند إزالة طريقة تسجيل دخول من حساب المستخدم. الافتراضي هو false.

GOTRUE_MAILER_TEMPLATES_MFA_FACTOR_ENROLLED_NOTIFICATION - string

مسار URL إلى قالب بريد إلكتروني يُستخدم عند إشعار المستخدم بأنه تمت إضافة طريقة تحقق جديدة إلى حسابه. (مثال: https://www.example.com/path-to-email-template.html) المتغيران Email و FactorType متاحان.

المحتوى الافتراضي (إذا كان القالب غير متاح):```html

A new verification method was added

Sign-in verification method {{ .FactorType }} was added to your account.

If you didn't make this change, contact support immediately.

``` `GOTRUE_MAILER_NOTIFICATIONS_MFA_FACTOR_ENROLLED_ENABLED` - `bool`

ما إذا كان سيتم إرسال بريد إلكتروني للإشعار عند إضافة طريقة تحقق جديدة إلى حساب المستخدم. الافتراضي هو false.

GOTRUE_MAILER_TEMPLATES_MFA_FACTOR_UNENROLLED_NOTIFICATION - string

مسار URL لقالب بريد إلكتروني يُستخدم عند إشعار المستخدم بأنه تمت إزالة طريقة تحقق من حسابه. (مثل https://www.example.com/path-to-email-template.html) المتغيران Email و FactorType متاحان.

المحتوى الافتراضي (إذا كان القالب غير متاح):```html

A verification method was removed

Sign-in verification method {{ .FactorType }} was removed from your account.

If you didn't make this change, contact support immediately.

``` `GOTRUE_MAILER_NOTIFICATIONS_MFA_FACTOR_UNENROLLED_ENABLED` - `bool`

ما إذا كان سيتم إرسال بريد إلكتروني للإشعار عند إزالة طريقة تحقق من حساب المستخدم. الافتراضي هو false.

مصادقة الهاتف

SMS_AUTOCONFIRM - bool

إذا لم تكن بحاجة إلى تأكيد الهاتف، يمكنك ضبط هذا على true. الافتراضي هو false.

SMS_MAX_FREQUENCY - number

يتحكم في أقل مدة زمنية يجب أن تمر قبل إرسال كلمة مرور لمرة واحدة (OTP) عبر SMS أخرى. القيمة هي عدد الثواني. الافتراضي هو 60 (دقيقة واحدة).

SMS_OTP_EXP - number

يتحكم في المدة التي يكون فيها رمز OTP عبر SMS صالحًا.

SMS_OTP_LENGTH - number

يتحكم في عدد أرقام رمز OTP عبر SMS المُرسل.

SMS_PROVIDER - string

الخيارات المتاحة هي: twilio, messagebird, textlocal, وvonage

ثم يمكنك استخدام بيانات اعتماد twilio:

  • SMS_TWILIO_ACCOUNT_SID
  • SMS_TWILIO_AUTH_TOKEN
  • SMS_TWILIO_MESSAGE_SERVICE_SID - يمكن ضبطه على رقم هاتف المرسل الخاص بك في twilio

أو بيانات اعتماد Messagebird، التي يمكن الحصول عليها من لوحة التحكم:

  • SMS_MESSAGEBIRD_ACCESS_KEY - مفتاح وصول Messagebird الخاص بك
  • SMS_MESSAGEBIRD_ORIGINATOR - مرسل SMS (رقم هاتف Messagebird الخاص بك مع + أو اسم الشركة)

CAPTCHA

  • إذا تم التمكين، سيتحقق CAPTCHA من نص الطلب بحثًا عن حقل captcha_token ويقدم طلب تحقق إلى مزود CAPTCHA.

SECURITY_CAPTCHA_ENABLED - string

ما إذا كانت برمجية captcha الوسيطة مفعّلة

SECURITY_CAPTCHA_PROVIDER - string

في الوقت الحالي، الخيارات المدعومة الوحيدة هي: hCaptcha وTurnstile

  • SECURITY_CAPTCHA_SECRET - string
  • SECURITY_CAPTCHA_TIMEOUT - string

استرجعها من حساب hcaptcha أو turnstile

إعادة المصادقة

SECURITY_UPDATE_PASSWORD_REQUIRE_REAUTHENTICATION - bool

فرض إعادة المصادقة عند تحديث كلمة المرور.

تسجيلات الدخول المجهولة

GOTRUE_EXTERNAL_ANONYMOUS_USERS_ENABLED - bool

استخدم هذا لتمكين/تعطيل تسجيلات الدخول المجهولة.

إعادة توجيه عنوان IP

GOTRUE_SECURITY_SB_FORWARDED_FOR_ENABLED - bool

فعّل إعادة توجيه عنوان IP باستخدام ترويسة طلب HTTP Sb-Forwarded-For. عند التمكين، سيقوم Auth بتحليل القيمة الأولى لهذه الترويسة كعنوان IP واستخدامها لتتبع عنوان IP وتحديد معدل الطلبات. تأكد من أن هذه الترويسة موثوقة تمامًا قبل تمكين هذه الميزة من خلال تمريرها فقط من عملاء أو وسطاء موثوقين.

نقاط النهاية

يعرض Auth نقاط النهاية التالية:

GET /settings

يُرجع الإعدادات العامة المتاحة لمثيل Auth هذا.```json { "external": { "apple": true, "azure": true, "bitbucket": true, "discord": true, "facebook": true, "figma": true, "github": true, "gitlab": true, "google": true, "keycloak": true, "linkedin": true, "notion": true, "slack": true, "snapchat": true, "spotify": true, "twitch": true, "twitter": true, "workos": true }, "disable_signup": false, "autoconfirm": false }

root@kitploit:~
### **POST، PUT /admin/users/<user_id>**

تُنشئ (POST) أو تُحدّث (PUT) المستخدم بناءً على `user_id` المحدد. يقبل حقل `ban_duration` وحدات الوقت التالية: "ns"، "us"، "ms"، "s"، "m"، "h". راجع [`time.ParseDuration`](https://pkg.go.dev/time#ParseDuration) لمزيد من التفاصيل حول الصيغة المستخدمة.```js
headers:
{
  "Authorization": "Bearer eyJhbGciOiJI...M3A90LCkxxtX9oNP9KZO" // requires a role claim that can be set in the GOTRUE_JWT_ADMIN_ROLES env var
}

body:
{
  "role": "test-user",
  "email": "[email protected]",
  "phone": "12345678",
  "password": "secret", // only if type = signup
  "email_confirm": true,
  "phone_confirm": true,
  "user_metadata": {},
  "app_metadata": {},
  "ban_duration": "24h" or "none" // to unban a user
}

POST /admin/generate_link

يُرجع رابط إجراء البريد الإلكتروني المطابق بناءً على النوع المحدد. من بين أمور أخرى، يحتوي الرد أيضًا على معاملات الاستعلام الخاصة برابط الإجراء كحقول JSON منفصلة لسهولة الاستخدام (إلى جانب OTP الخاص بالبريد الإلكتروني الذي يُولَّد منه الرمز المميز المطابق).```js headers: { "Authorization": "Bearer eyJhbGciOiJI...M3A90LCkxxtX9oNP9KZO" // admin role required }

body: { "type": "signup" or "magiclink" or "recovery" or "invite" or "email_change_current" or "email_change_new", "email": "[email protected]", "password": "secret", // only if type = signup "data": { ... }, // only if type = signup "redirect_to": "https://supabase.io" // Redirect URL to send the user to after an email action. Defaults to SITE_URL.

}

root@kitploit:~
الإرجاع```js
{
  "action_link": "http://localhost:9999/verify?token=TOKEN&type=TYPE&redirect_to=REDIRECT_URL",
  "email_otp": "EMAIL_OTP",
  "hashed_token": "TOKEN",
  "verification_type": "TYPE",
  "redirect_to": "REDIRECT_URL",
  ...
}

POST /signup

تسجيل مستخدم جديد باستخدام البريد الإلكتروني وكلمة المرور.```json { "email": "[email protected]", "password": "secret" }

root@kitploit:~
يعيد:```js
{
  "id": "11111111-2222-3333-4444-5555555555555",
  "email": "[email protected]",
  "confirmation_sent_at": "2016-05-15T20:49:40.882805774-07:00",
  "created_at": "2016-05-15T19:53:12.368652374-07:00",
  "updated_at": "2016-05-15T19:53:12.368652374-07:00"
}

// if sign up is a duplicate then faux data will be returned
// as to not leak information about whether a given email
// has an account with your service or not

سجّل مستخدمًا جديدًا باستخدام رقم الهاتف وكلمة المرور.```js { "phone": "12345678", // follows the E.164 format "password": "secret" }

root@kitploit:~
يعيد:```js
{
  "id": "11111111-2222-3333-4444-5555555555555", // if duplicate sign up, this ID will be faux
  "phone": "12345678",
  "confirmation_sent_at": "2016-05-15T20:49:40.882805774-07:00",
  "created_at": "2016-05-15T19:53:12.368652374-07:00",
  "updated_at": "2016-05-15T19:53:12.368652374-07:00"
}

إذا تم تفعيل AUTOCONFIRM وكان التسجيل مكررًا، فستُرجع نقطة النهاية:```json { "code": 400, "msg": "User already registered" }

root@kitploit:~
### **POST /resend**

يسمح للمستخدم بإعادة إرسال رمز OTP الموجود لعمليات التسجيل أو الرسائل النصية أو تغيير البريد الإلكتروني أو تغيير رقم الهاتف.```json
{
  "email": "[email protected]",
  "type": "signup"
}

The input content is empty — there is no chunk text to translate. Please provide the actual chunk content after "INPUT:".```json { "phone": "12345678", "type": "sms" }

root@kitploit:~
المرجعات:```json
{
  "message_id": "msgid123456"
}

POST /invite

يدعو مستخدمًا جديدًا عبر البريد الإلكتروني. يتطلب هذا الـ endpoint تعيين JWT الخاص بـ service_role أو supabase_admin كترويسة Auth Bearer:

مثال:```js headers: { "Authorization" : "Bearer eyJhbGciOiJI...M3A90LCkxxtX9oNP9KZO" }

root@kitploit:~
[No content provided to translate.]```json
{
  "email": "[email protected]"
}

الإرجاع:```json { "id": "11111111-2222-3333-4444-5555555555555", "email": "[email protected]", "confirmation_sent_at": "2016-05-15T20:49:40.882805774-07:00", "created_at": "2016-05-15T19:53:12.368652374-07:00", "updated_at": "2016-05-15T19:53:12.368652374-07:00", "invited_at": "2016-05-15T19:53:12.368652374-07:00" }

root@kitploit:~
### **POST /verify**

تحقق من التسجيل أو استعادة كلمة المرور. يمكن أن يكون النوع `signup` أو `recovery` أو `invite` أو `magiclink` أو `email_change` أو `sms` أو `phone_change`
و`token` هو رمز يتم إرجاعه من إمّا `/signup` أو `/recover`.```json
{
  "type": "signup",
  "token": "confirmation-code-delivered-in-email"
}

password مطلوب للتحقق من التسجيل إذا لم توجد كلمة مرور قائمة.

المرتجعات:```json { "access_token": "jwt-token-representing-the-user", "token_type": "bearer", "expires_in": 3600, "refresh_token": "a-refresh-token", "type": "signup | recovery | invite | magiclink | email_change | sms | phone_change" }

root@kitploit:~
تحقق من تسجيل الهاتف أو رمز OTP عبر الرسائل النصية. يجب ضبط النوع على `sms`.```json
{
  "type": "sms",
  "token": "confirmation-otp-delivered-in-sms",
  "redirect_to": "https://supabase.io",
  "phone": "phone-number-sms-otp-was-delivered-to"
}

المُخرجات:```json { "access_token": "jwt-token-representing-the-user", "token_type": "bearer", "expires_in": 3600, "refresh_token": "a-refresh-token" }

root@kitploit:~
### **GET /verify**

تحقق من التسجيل أو استعادة كلمة المرور. يمكن أن يكون النوع `signup` أو `recovery` أو `magiclink` أو `invite` أو `email_change`، و`token` هو رمز تم إرجاعه من `/signup` أو `/recover` أو `/magiclink`.

معاملات الاستعلام:```json
{
  "type": "signup",
  "token": "confirmation-code-delivered-in-email",
  "redirect_to": "https://supabase.io"
}

سيتم تسجيل دخول المستخدم وإعادة توجيهه إلى:``` SITE_URL/#access_token=jwt-token-representing-the-user&token_type=bearer&expires_in=3600&refresh_token=a-refresh-token&type=invite

root@kitploit:~
يجب أن يكتشف تطبيقك معاملات الاستعلام (query params) في الجزء (fragment) ويستخدمها لتعيين الجلسة (يقوم supabase-js بذلك تلقائيًا)

يمكنك استخدام معامل `type` لإعادة توجيه المستخدم إلى نموذج تعيين كلمة المرور في حالة `invite` أو `recovery`،
أو عرض رسالة تأكيد الحساب/الترحيب في حالة `signup`، أو توجيههم إلى تدفق إعداد إضافي (onboarding flow)

### **POST /otp**

كلمة مرور لمرة واحدة (One-Time-Password). سيتم تسليم رابط سحري أو OTP عبر SMS إلى المستخدم اعتمادًا على ما إذا كان نص الطلب يحتوي على مفتاح "email" أو "phone".

إذا كان `"create_user": true`، فلن يتم تسجيل المستخدم تلقائيًا إذا لم يكن المستخدم موجودًا.```js
{
  "phone": "12345678" // follows the E.164 format
  "create_user": true
}

أو```js // exactly the same as /magiclink { "email": "[email protected]" "create_user": true }

root@kitploit:~
الإرجاع:```json
{}

POST /magiclink (يُوصى باستخدام /otp بدلاً من ذلك. انظر أعلاه.)

الرابط السحري. سيتم توصيل رابط (مثل /verify?type=magiclink&token=fgtyuf68ddqdaDd) إلى المستخدم بناءً على عنوان البريد الإلكتروني، والذي يمكنه استخدامه لاسترداد access_token.

افتراضيًا، لا يمكن إرسال الروابط السحرية إلا مرة واحدة كل 60 ثانية.```json { "email": "[email protected]" }

root@kitploit:~
الإرجاع:```json
{}

عند النقر على الرابط السحري، سيتم إعادة التوجيه إلى <SITE_URL>#access_token=x&refresh_token=y&expires_in=z&token_type=bearer&type=magiclink (انظر /verify أعلاه)

POST /recover

استعادة كلمة المرور. سيتم إرسال بريد إلكتروني لاستعادة كلمة المرور إلى المستخدم بناءً على عنوان البريد الإلكتروني.

بشكل افتراضي، لا يمكن إرسال روابط الاستعادة إلا مرة واحدة كل 60 ثانية.```json { "email": "[email protected]" }

root@kitploit:~
يُرجع:```json
{}

POST /token

هذه نقطة نهاية OAuth2 تنفّذ حاليًا نوعي منح password وrefresh_token

معلّمات الاستعلام:``` ?grant_type=password

root@kitploit:~
body:```js
// Email login
{
  "email": "[email protected]",
  "password": "somepassword"
}

// Phone login
{
  "phone": "12345678",
  "password": "somepassword"
}

أو

معلمات الاستعلام:``` grant_type=refresh_token

root@kitploit:~
body:```json
{
  "refresh_token": "a-refresh-token"
}

بمجرد حصولك على رمز وصول، يمكنك الوصول إلى الطرق التي تتطلب المصادقة عن طريق تعيين رأس Authorization: Bearer YOUR_ACCESS_TOKEN_HERE.

المرتجعات:```json { "access_token": "jwt-token-representing-the-user", "token_type": "bearer", "expires_in": 3600, "refresh_token": "a-refresh-token" }

root@kitploit:~
### **GET /user**

احصل على كائن JSON للمستخدم المسجّل الدخول (يتطلب المصادقة)

يعيد:```json
{
  "id": "11111111-2222-3333-4444-5555555555555",
  "email": "[email protected]",
  "confirmation_sent_at": "2016-05-15T20:49:40.882805774-07:00",
  "created_at": "2016-05-15T19:53:12.368652374-07:00",
  "updated_at": "2016-05-15T19:53:12.368652374-07:00"
}

PUT /user

تحديث مستخدم (يتطلب المصادقة). إلى جانب تغيير البريد الإلكتروني/كلمة المرور، يمكن استخدام هذه الطريقة لتعيين بيانات مستخدم مخصصة. سيؤدي تغيير البريد الإلكتروني إلى إرسال رابط سحري.```json { "email": "[email protected]", "password": "new-password", "phone": "+123456789", "data": { "key": "value", "number": 10, "admin": false } }

root@kitploit:~
الإرجاع:```json
{
  "id": "11111111-2222-3333-4444-5555555555555",
  "email": "[email protected]",
  "email_change_sent_at": "2016-05-15T20:49:40.882805774-07:00",
  "phone": "+123456789",
  "phone_change_sent_at": "2016-05-15T20:49:40.882805774-07:00",
  "created_at": "2016-05-15T19:53:12.368652374-07:00",
  "updated_at": "2016-05-15T19:53:12.368652374-07:00"
}

إذا تم تفعيل GOTRUE_SECURITY_UPDATE_PASSWORD_REQUIRE_REAUTHENTICATION، فسيحتاج المستخدم إلى إعادة المصادقة أولاً.```json { "password": "new-password", "nonce": "123456" }

root@kitploit:~
### **GET /reauthenticate**

يرسل nonce إلى البريد الإلكتروني للمستخدم (المفضل) أو هاتفه. يتطلب هذا الـ endpoint تسجيل دخول المستخدم / مصادقته أولاً. يجب أن يمتلك المستخدم بريدًا إلكترونيًا أو رقم هاتف حتى يتم إرسال nonce بنجاح.```js
headers: {
  "Authorization" : "Bearer eyJhbGciOiJI...M3A90LCkxxtX9oNP9KZO"
}

POST /logout

تسجيل خروج مستخدم (يتطلب المصادقة).

سيؤدي ذلك إلى إبطال جميع رموز التحديث (refresh tokens) الخاصة بالمستخدم. تذكر أن رموز JWT ستظل صالحة للمصادقة عديمة الحالة (stateless auth) حتى تنتهي صلاحيتها.

GET /authorize

الحصول على access_token من مزوّد OAuth خارجي

معاملات الاستعلام (query params):``` provider=apple | azure | bitbucket | discord | facebook | figma | github | gitlab | google | keycloak | linkedin | notion | slack | snapchat | spotify | twitch | twitter | workos

scopes=<optional additional scopes depending on the provider (email and name are requested by default)>

root@kitploit:~
يعيد التوجيه إلى المزوّد ثم إلى `/callback`

لإعداد خاص بشركة Apple، راجع: <https://github.com/supabase/auth#apple-oauth>

### **GET /callback**

يجب أن يعيد المزوّد الخارجي التوجيه إلى نقطة النهاية هذه

يعيد التوجيه إلى `<GOTRUE_SITE_URL>#access_token=<access_token>&refresh_token=<refresh_token>&provider_token=<provider_oauth_token>&expires_in=3600&provider=<provider_name>`
إذا تم طلب نطاقات إضافية، فسيتم تعبئة `provider_token`، ويمكنك استخدامه لجلب بيانات إضافية من المزوّد أو التفاعل مع خدماته
تنزيل الأداة
twitter
workos