Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

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

الأكثر شعبية

عرض الكل →

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

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

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

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

auth

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

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

[![Coverage Status](https://coveralls.io/repos/github/supabase/auth/badge.svg?branch=master)](https://coveralls.io/github/supabase/auth?branch=master)

Auth هو خادم إدارة مستخدمين ومصادقة مكتوب بلغة Go يدعم ميزات
[Supabase](https://supabase.com) مثل:

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

وهو مبني في الأصل على قاعدة الشيفرة الممتازة
[GoTrue من Netlify](https://github.com/netlify/gotrue)، ومع ذلك فقد تباعد الاثنان بشكل كبير في الميزات والإمكانيات.

إذا كنت ترغب في المساهمة في المشروع، فيرجى الرجوع إلى [دليل المساهمة](https://github.com/supabase/auth/blob/master/CONTRIBUTING.md).

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

- [بدء سريع](#quick-start)
- [التشغيل في الإنتاج](#running-in-production)
- [الإعدادات](#configuration)
- [نقاط النهاية](#endpoints)

## بدء سريع

أنشئ ملف `.env` لتخزين متغيرات البيئة المخصصة الخاصة بك. انظر [`example.env`](https://github.com/supabase/auth/blob/master/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
```
3. نفّذ الملف الثنائي auth: `./auth`

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

أنشئ ملف `.env.docker` لتخزين متغيرات البيئة المخصصة الخاصة بك. انظر [`example.docker.env`](https://github.com/supabase/auth/blob/master/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 الشائعة، راجع [الرابط التالي](https://pkg.go.dev/github.com/gobwas/glob#Compile).

`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
```
`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
```
`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](https://opentelemetry.io/docs/reference/specification/protocol/exporter/) لجامع البيانات أو الخدمة الخاصة بك.

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

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

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

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

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

على سبيل المثال، إذا كنت تستخدم [Honeycomb.io](https://docs.honeycomb.io/getting-data-in/opentelemetry/go-distro/#using-opentelemetry-without-the-honeycomb-distribution)، فيجب عليك تعيين متغيرات 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=<API-KEY>,x-honeycomb-dataset=auth"
```
لاحظ أن 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
```
#### مقاييس وقت تشغيل 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` و`twitter` و`workos` للمصادقة الخارجية.

استخدم هذه الأسماء كمفاتيح تحت `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
```
لا يلزم وجود موفّرين خارجيين، لكن يجب عليك توفير القيم المطلوبة إذا اخترت تفعيل أيٍّ منها.

`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/master/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")
        }
    }
   ```
3. قم بإنشاء ملف crt و key. انظر [هنا](https://www.freecodecamp.org/news/how-to-get-https-working-on-your-local-development-environment-in-5-minutes-7af615770eec/) لمزيد من المعلومات.
4. قم بإنشاء `GOTRUE_EXTERNAL_APPLE_SECRET` باتباع هذا [المنشور](https://medium.com/identity-beyond-borders/how-to-configure-sign-in-with-apple-77c61e336003)!

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

إرسال البريد الإلكتروني ليس مطلوبًا، لكن يُنصح به بشدة لاستعادة كلمة المرور.
إذا تم تفعيله، يجب عليك توفير القيم المطلوبة أدناه.```properties
GOTRUE_SMTP_HOST=smtp.mandrillapp.com
GOTRUE_SMTP_PORT=587
[email protected]
GOTRUE_SMTP_PASS=correcthorsebatterystaple
[email protected]
GOTRUE_MAILER_SUBJECTS_CONFIRMATION="Please confirm"
```
`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="https://github.com/supabase/auth/blob/master/%7B%7B%20.ConfirmationURL%20%7D%7D">Accept invitation</a></p>
```
`MAILER_TEMPLATES_CONFIRMATION` - `string`

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

---

[Read more](https://github.com/supabase/auth)
تنزيل الأداة