سا توكن v1.39.0
إطار مصادقة إذن Java خفيف الوزن يجعل المصادقة بسيطة وأنيقة!
الوثائق عبر الإنترنت: https://sa-token.cc
مقدمة سا-توكين
Sa-Token هو إطار عمل خفيف الوزن لمصادقة إذن Java ويحتوي حاليًا على خمس وحدات أساسية: مصادقة تسجيل الدخول، ومصادقة الأذونات، وتسجيل الدخول الموحد، وOAuth2.0، ومصادقة الخدمات الصغيرة.
مثال بسيط للعرض: (انقر للتوسيع/الطي)
يهدف Sa-Token إلى إكمال جزء مصادقة الإذن من النظام بطريقة بسيطة وأنيقة. بأخذ مصادقة تسجيل الدخول كمثال، تحتاج فقط إلى:
// 会话登录,参数填登录人的账号id
StpUtil . login ( 10001 );
ليست هناك حاجة لتنفيذ أي واجهة أو إنشاء أي ملف تكوين، ما عليك سوى استدعاء هذا الرمز الثابت لإكمال مصادقة تسجيل الدخول للجلسة.
إذا كانت الواجهة تتطلب تسجيل الدخول للوصول إليها، فنحن نحتاج فقط إلى استدعاء الكود التالي:
// 校验当前客户端是否已经登录,如果未登录则抛出 `NotLoginException` 异常
StpUtil . checkLogin ();
في Sa-Token، يمكن حل معظم الوظائف بسطر واحد من التعليمات البرمجية:
طرد الأشخاص دون الاتصال بالإنترنت:
// 将账号id为 10077 的会话踢下线
StpUtil . kickout ( 10077 );
مصادقة الإذن:
// 注解鉴权:只有具备 `user:add` 权限的会话才可以进入方法
@ SaCheckPermission ( "user:add" )
public String insert ( SysUser user ) {
// ...
return "用户增加" ;
}
مصادقة اعتراض الطريق:
StpUtil.checkPermission("user"));
SaRouter.match("/admin/**", r -> StpUtil.checkPermission("admin"));
SaRouter.match("/goods/**", r -> StpUtil.checkPermission("goods"));
SaRouter.match("/orders/**", r -> StpUtil.checkPermission("orders"));
SaRouter.match("/notice/**", r -> StpUtil.checkPermission("notice"));
// 更多模块...
})).addPathPatterns("/**");" style=";text-align:right;direction:rtl">
// 根据路由划分模块,不同模块不同鉴权
registry . addInterceptor ( new SaInterceptor ( handler -> {
SaRouter . match ( "/user/**" , r -> StpUtil . checkPermission ( "user" ));
SaRouter . match ( "/admin/**" , r -> StpUtil . checkPermission ( "admin" ));
SaRouter . match ( "/goods/**" , r -> StpUtil . checkPermission ( "goods" ));
SaRouter . match ( "/orders/**" , r -> StpUtil . checkPermission ( "orders" ));
SaRouter . match ( "/notice/**" , r -> StpUtil . checkPermission ( "notice" ));
// 更多模块...
})). addPathPatterns ( "/**" );
عندما تضجر من Shiro وSpringSecurity وأطر العمل الأخرى، ستفهم مدى بساطة وأنيقة تصميم واجهة برمجة تطبيقات Sa-Token مقارنة بهذه الأطر القديمة التقليدية!
قائمة الوحدات الأساسية: (انقر للتوسيع/الطي)
- مصادقة تسجيل الدخول - تسجيل دخول أحادي الطرف، وتسجيل دخول متعدد الأطراف، وتسجيل دخول حصري متبادل من نفس النهاية، ولا يلزم تسجيل الدخول خلال سبعة أيام.
- مصادقة الإذن - مصادقة السلطة، ومصادقة الدور، والمصادقة الثانوية للجلسة.
- طرد الأشخاص في وضع عدم الاتصال - طرد الأشخاص في وضع عدم الاتصال بناءً على معرف حسابهم، وطرد الأشخاص في وضع عدم الاتصال بناءً على قيمة الرمز المميز الخاص بهم.
- المصادقة المستندة إلى التعليقات التوضيحية - تفصل المصادقة عن رمز العمل بشكل أنيق.
- مصادقة اعتراض المسار - استنادًا إلى مصادقة اعتراض المسار، يمكن تكييف الوضع المريح.
- الجلسة - جلسة مشتركة لجميع الأطراف، جلسة حصرية لطرف واحد، جلسة مخصصة، وصول سهل إلى القيم.
- امتداد طبقة الثبات - يمكن دمج Redis، ولن يتم فقدان البيانات بعد إعادة التشغيل.
- الفصل بين الواجهة الأمامية والخلفية - يمكن أيضًا مصادقة التطبيقات والتطبيقات الصغيرة والمحطات الطرفية الأخرى التي لا تدعم ملفات تعريف الارتباط بسهولة.
- تخصيص نمط الرمز المميز - ستة أنماط رمزية مدمجة، يمكنك أيضًا تخصيص استراتيجية إنشاء الرمز المميز.
- وضع تذكرني - التكيف مع وضع [تذكرني] وأعد تشغيل المتصفح دون التحقق.
- مصادقة المستوى الثاني - المصادقة مرة أخرى بناءً على تسجيل الدخول لضمان الأمان.
- محاكاة حسابات الآخرين - التعامل مع أي بيانات حالة المستخدم في الوقت الحقيقي.
- تبديل الهوية المؤقتة - تبديل هوية الجلسة مؤقتًا إلى حساب آخر.
- تسجيل الدخول الحصري المتبادل من نفس النهاية - مثل QQ، يكون الهاتف المحمول والكمبيوتر متصلين بالإنترنت في نفس الوقت، ولكن تسجيل الدخول حصري بشكل متبادل على الهاتفين المحمولين.
- حظر الحساب - حظر تسجيل الدخول، وحظر تصنيف الأعمال، وحظر سلم العقاب.
- تشفير كلمة المرور - يوفر خوارزميات التشفير الأساسية التي يمكنها تشفير MD5 وSHA1 وSHA256 وAES بسرعة.
- استعلام الجلسة - يوفر واجهة استعلام مريحة ومرنة للجلسة.
- مصادقة Http الأساسية - سطر واحد من التعليمات البرمجية للوصول إلى مصادقة Http Basic وDigest.
- المستمع العالمي - ينفذ بعض عمليات AOP أثناء العمليات الرئيسية مثل تسجيل دخول المستخدم، وتسجيل الخروج، والطرد دون الاتصال بالإنترنت.
- عامل التصفية الشامل - يتعامل بسهولة مع عمليات الاستجابة الأمنية من الدرجة الأولى عبر النطاقات والمحددة عالميًا.
- مصادقة نظام متعدد الحسابات - مصادقة منفصلة لحسابات متعددة في نظام واحد (مثل جدول المستخدم وجدول المسؤول في المركز التجاري)
- تسجيل الدخول الموحد - هناك ثلاثة أوضاع مضمنة لتسجيل الدخول الموحد: نفس المجال، والمجال المشترك، ونفس Redis، وcross-Redis، وفصل الواجهة الأمامية والخلفية، ويمكن التعامل مع البنى الأخرى.
- تسجيل الخروج من نقطة واحدة - ابدأ تسجيل الخروج في أي نظام فرعي، وسيكون النظام بأكمله غير متصل بالإنترنت.
- مصادقة OAuth2.0 - يمكنك إنشاء خدمات OAuth2.0 بسهولة ودعم وضع openid.
- الجلسة الموزعة - توفر حلاً للجلسة الموزعة في مركز بيانات مشترك.
- مصادقة بوابة الخدمات الصغيرة - تتكيف مع مصادقة اعتراض المسار للبوابات الشائعة مثل Gateway وShenYu وZuul وما إلى ذلك.
- مصادقة استدعاء RPC - مصادقة إعادة توجيه البوابة، ومصادقة استدعاء RPC، بحيث لا يتم تشغيل مكالمات الخدمة بعد الآن
- مصادقة الرمز المميز المؤقتة - تحل مشاكل ترخيص الرمز المميز على المدى القصير.
- Redis المستقل - يفصل بين ذاكرة التخزين المؤقت للأذونات وذاكرة التخزين المؤقت للأعمال.
- مصادقة تسجيل الدخول السريعة السريعة - أدخل صفحة تسجيل دخول في المشروع بدون رمز صفري.
- لهجة العلامة - توفر حزمة تكامل لهجة علامة Thymeleaf وتوفر أمثلة على تكامل الخنفساء.
- تكامل jwt - يوفر ثلاثة أوضاع لحلول تكامل jwt ويوفر إمكانات معلمات توسيع الرمز المميز.
- نقل حالة استدعاء RPC - يوفر حزم التكامل مثل dubbo وgrpc، بحيث لا يتم فقدان حالة تسجيل الدخول أثناء مكالمات RPC.
- توقيع المعلمة - يوفر وحدة التحقق من توقيع استدعاء واجهة برمجة التطبيقات (API) عبر النظام لمنع التلاعب بالمعلمات وطلب إعادة التشغيل.
- التجديد التلقائي - يتم توفير استراتيجيتين لانتهاء صلاحية الرمز المميز، والتي يمكن استخدامها بمرونة وتجديدها تلقائيًا.
- جاهز للاستخدام بمجرد إخراجه من الصندوق - يوفر حزم تكامل إطار عمل مشتركة مثل SpringMVC وWebFlux وSolon وما إلى ذلك، جاهزة للاستخدام بمجرد إخراجها من الصندوق.
- أحدث مجموعة من التقنيات - تتكيف مع أحدث مجموعة من التقنيات: تدعم SpringBoot 3.x، وjdk 17.
تسجيل الدخول الموحّد (SSO).
ينقسم Sa-Token SSO إلى ثلاثة أوضاع لحل مشكلات الوصول إلى SSO ضمن بنيات مختلفة مثل نفس المجال، والمجال المشترك، وRedis المشترك، وcross-Redis، وتكامل الواجهة الأمامية والخلفية، والواجهة الأمامية والخلفية الانفصال...الخ:
بنية النظام | نمط التبني | مقدمة | رابط التوثيق |
---|
الواجهة الأمامية في نفس المجال + الواجهة الخلفية في نفس المجال مثل Redis | الوضع الأول | جلسة مزامنة ملفات تعريف الارتباط المشتركة | التوثيق، الأمثلة |
مجالات مختلفة في الواجهة الأمامية + مثل Redis في الواجهة الخلفية | الوضع 2 | إعادة توجيه URL تنشر الجلسة | التوثيق، الأمثلة |
مجالات مختلفة في الواجهة الأمامية + Redis مختلف في النهاية الخلفية | الوضع الثالث | طلب المتشعب للحصول على الجلسة | التوثيق، الأمثلة |
- نفس المجال الأمامي: ويعني أنه يمكن نشر أنظمة متعددة تحت نفس اسم المجال الرئيسي، مثل:
c1.domain.com
، c2.domain.com
، c3.domain.com
- الواجهة الخلفية هي نفس Redis: هذا يعني أنه يمكن لأنظمة متعددة الاتصال بنفس Redis. (لا يتطلب هذا وضع جميع بيانات المشروع في Redis واحد. يوفر Sa-Token حلاً لـ
[权限缓存与业务缓存分离]
) - إذا لم يكن من الممكن أن تكون الواجهة الأمامية أو الخلفية في نفس المجال مثل Redis، فيمكنك استخدام الوضع الثالث، تذكرة التحقق لطلب Http للحصول على الجلسة.
- تم توفير مثال لوضع NoSdk، ويمكن أيضًا توصيل الأنظمة التي لا تستخدم Sa-Token.
- توفير وثائق واجهة خادم sso، ويمكن أيضًا توصيل الأنظمة التي لا تستخدم لغة Java.
- يوفر حلول فصل وتكامل للواجهة الأمامية والخلفية: سواء كان خادم sso أو عميل sso، يمكن دمج فصل الواجهة الأمامية والخلفية.
- يوفر التحقق الأمني: التحقق من اسم النطاق، والتحقق من التذاكر، والتحقق من توقيع المعلمة، ويمنع بشكل فعال اختطاف التذاكر، وطلب إعادة التشغيل والهجمات الأخرى.
- منع فقدان المعلمات: اختبر المؤلف أطر عمل SSO متعددة، وتم فقدان جميع المعلمات، على سبيل المثال، قبل تسجيل الدخول، كان:
http://a.com?id=1&name=2
، وبعد تسجيل الدخول الناجح، أصبح. : http://a.com?id=1
، يحتوي Sa-Token-SSO على خوارزمية خاصة لضمان عدم فقدان المعلمات، وإرجاع المسار الأصلي بدقة بعد تسجيل الدخول الناجح. - تقديم اقتراحات لحلول مزامنة/ترحيل بيانات المستخدم: الترحيل الموحد قبل التطوير، ومزامنة البيانات في الوقت الفعلي أثناء وقت التشغيل، والمطابقة بناءً على الحقول المرتبطة، والمطابقة بناءً على حقول center_id، وما إلى ذلك.
- يوفر أمثلة تجريبية قابلة للتشغيل مباشرة لمساعدتك في التعرف سريعًا على عملية تسجيل الدخول الموحّد (SSO) العامة.
مصادقة ترخيص OAuth2
تنقسم وحدة Sa-Token-OAuth2 إلى أربعة أوضاع ترخيص لحل احتياجات الترخيص في سيناريوهات مختلفة.
وضع التفويض | مقدمة |
---|
رمز التفويض | خطوة التفويض القياسية OAuth2.0، ينقل الخادم الرمز إلى العميل، ويتبادل العميل الرمز لرمز التفويض. |
ضمني | كخيار احتياطي عندما لا يمكن استخدام وضع رمز التفويض، يستخدم الخادم إعادة توجيه عنوان URL لنقل الرمز المميز مباشرةً إلى صفحة العميل. |
كلمة المرور | يقوم العميل مباشرة بتبادل حساب المستخدم وكلمة المرور الخاصة برمز التفويض. |
بيانات اعتماد العميل | رمز مميز من جانب الخادم لمستوى العميل، يمثل ترخيص الموارد الخاص بالتطبيق |
الوثيقة المرجعية التفصيلية: https://sa-token.cc/doc.html#/oauth2/readme
حالة التكامل مفتوح المصدر
- [ثلجي]: أول منصة تطوير سريع في الصين تفصل الأسرار الوطنية عما قبله وما بعده، باستخدام Vue3 + AntDesignVue3 + Vite + SpringBoot + Mp + HuTool + SaToken.
- [ RuoYi-Vue-Plus ]: إعادة كتابة جميع وظائف RuoYi-Vue ودمج Sa-Token+Mybatis-Plus+Jackson+Xxl-Job+knife4j+Hutool+OSS للمزامنة المنتظمة
- [المسؤول الذكي]: SmartAdmin هي أول منصة تطوير سريعة في الصين للواجهة الوسطى والخلفية مع "كود عالي الجودة" باعتباره جوهرًا و"بسيطًا وفعالًا وآمنًا"؛
- [Dengdeng]: منصة للتطوير السريع للخدمات الصغيرة والمتوسطة والخلفية تركز على الحلول متعددة المستأجرين. يدعم وضع المستأجر قاعدة البيانات المستقلة (وضع DATASOURCE)، وبنية البيانات المشتركة (وضع COLUMN)، ووضع غير المستأجر (وضع NONE)
- [EasyAdmin]: نظام إدارة الواجهة الخلفية يعتمد على SpringBoot2 + Sa-Token + Mybatis-Plus + Snakerflow + Layui، وهو مرن ويمكنه فصل الواجهة الأمامية عن الواجهة الخلفية، أو يمكن أن يكون كيانًا واحدًا مدمجًا المولد وإدارة الأذونات ومحرك سير العمل وما إلى ذلك.
- [sa-admin-server]: سقالات تطوير إدارة الخلفية استنادًا إلى sa-admin-ui.
هناك المزيد من الحالات الممتازة مفتوحة المصدر التي لا يمكن عرضها واحدة تلو الأخرى، يرجى الرجوع إلى: Awesome-Sa-Token
روابط ودية
- [ OkHttps ]: إطار عمل اتصال http خفيف الوزن، واجهة برمجة تطبيقات أنيقة للغاية، تدعم بروتوكولات WebSocket وStomp
- [Bean Searcher]: ORM للقراءة فقط يركز على الاستعلامات المتقدمة، مما يتيح استرجاع القائمة المعقدة باستخدام سطر واحد من التعليمات البرمجية!
- [Jpom]: إنشاء بسيط وخفيف الوزن ومنخفض التدخل عبر الإنترنت، والنشر التلقائي، والتشغيل والصيانة اليومية، وبرامج مراقبة المشروع.
- [TLog]: أداة تتبع علامة سجل موزعة خفيفة الوزن.
- [hippo4j]: إطار عمل تجمع خيط ديناميكي قوي مع وظائف المراقبة والإنذار.
- [hertzbeat]: نظام مراقبة وإنذار في الوقت الحقيقي سهل الاستخدام وسهل الاستخدام ومفتوح المصدر، ولا يتطلب وكيل، ومجموعة عالية الأداء، وإمكانيات مراقبة مخصصة قوية.
- [سولون]: إطار عمل أكثر حداثة لتطوير التطبيقات: أسرع وأصغر وأكثر حرية.
- [Chat2DB]: أداة لإدارة قواعد البيانات وذكاء الأعمال تعتمد على الذكاء الاصطناعي وتدعم إدارة 22 قاعدة بيانات مثل Mysql وpg وOracle وRedis.
استضافة الكود
- جيتي: https://gitee.com/dromara/sa-token
- جيثب: https://github.com/dromara/sa-token
- كود الجيت: https://gitcode.com/dromara/sa-token
مجموعة الاتصالات
مجموعة اتصالات QQ: 823181187 انقر للانضمام
مجموعة اتصالات WeChat:
(امسح رمز الاستجابة السريعة لإضافة WeChat، ملاحظة: sa-token، أدعوك للانضمام إلى الدردشة الجماعية)
فوائد الانضمام إلى الدردشة الجماعية:
- احصل على إشعارات تحديث الإطار في أقرب وقت ممكن.
- احصل على إشعارات الأخطاء في إطار العمل في أسرع وقت ممكن.
- احصل على إشعارات بالحالات الجديدة مفتوحة المصدر في أسرع وقت ممكن.
- التواصل (mō yú) مع بعضهم البعض (huá shuà) مع العديد من الرجال الكبار.