كيفية استخدام حماية HTPassWD في Tomcat؟
-
09-09-2019 - |
سؤال
لقد قمت بالفعل بإنشاء ملف قاعدة بيانات المستخدم باستخدام أمر apache's htpasswd. يستخدم هذا الملف الآن من قبل العديد من التطبيقات الأخرى مثل Apache والتخريب.
يتم إنشاء المستخدمين في ذلك مثل هذا:
htpasswd /path/to/users.htpasswd peter
ملف المستخدم هذا هو عالمي، وليس لكل دليل.
كيف يمكنني جعل Tomcat 6 استخدم هذا الملف نفسه كعالم أمان؟
المحلول
هناك خياران:
استخدم Apache كإنجان أمامي Tomcat (باستخدام إما MOD_JK أو MOD_PROXY_AJP) وأبشي يقوم بالمصادقة. يمكنك أن تجد تفاصيل حول كيفية القيام بذلك هنا
إذا كنت تريد أن يقوم Tomcat بقيام المصادقة، فأنت بحاجة إلى استخدام OT شيء آخر غير ملف HTPassWD. هناك 4 طرق لحفظ بيانات اعتماد المستخدمين - استخدام قاعدة البيانات، JNDI / LDAP، ملف XML أو موفر JAAS. يمكنك أن تقرأ عن كل الخيارات في تكوين عالم كيف.
نصائح أخرى
الأكثر مماثلة ل htpasswd قد يكون memoryRealm.وبعد كان لدي مشاكل في نفسي لإيجاد مثال بسيط كيفية استخدامه، لذلك سأقوم بنشر رمز مثال سهل هنا:
قم بإعداد دور واسم المستخدم وكلمة المرور في Tomcat-Users.xml
يجب أن يحتوي Web.xml على شيء مثل:
<security-constraint> <web-resource-collection> <web-resource-name> My Protected WebSite </web-resource-name> <url-pattern> /* </url-pattern> <http-method> GET </http-method> <http-method> POST </http-method> </web-resource-collection> <auth-constraint> <!-- the same like in your tomcat-users.conf file --> <role-name> test </role-name> </auth-constraint> </security-constraint> <login-config> <auth-method> BASIC </auth-method> <realm-name> Basic Authentication </realm-name> </login-config> <security-role> <description> Test role </description> <role-name> test </role-name> </security-role>
أضف هذا إلى ملف Server.xml الخاص بك:
<Realm className="org.apache.catalina.realm.MemoryRealm"></Realm>
لتأمين الوصول إلى Tomcat WebApp الخاص بك، يمكنك تطبيق قيود الأمان البسيطة (على سبيل المثال /var/lib/tomcat7/webapps/*/WEB-INF/web.xml
) على النحو التالي (فقط أضفه من قبل </web-app>
النهاية):
<!-- This security constraint protects your webapp interface. -->
<login-config>
<!-- Define the Login Configuration -->
<auth-method>BASIC</auth-method>
<realm-name>Webapp</realm-name>
</login-config>
<security-constraint>
<web-resource-collection>
<web-resource-name>Admin</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>*</role-name>
</auth-constraint>
<!-- Specifying a Secure Connection -->
<user-data-constraint>
<!-- transport-guarantee can be CONFIDENTIAL (forced SSL), INTEGRAL, or NONE -->
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
<!-- Authorization, see: tomcat-users.xml -->
<security-role>
<role-name>*</role-name>
</security-role>
عنصر تسجيل الدخول يحتوي على
auth-method
العنصر، الذي يحدد طريقة المصادقة التي نستخدمها، والتي هيBASIC
. وبعد الsecurity-constraint
يحتوي العنصر على 3 عناصر:web-resource-collection
,auth-constraint
, ، وuser-data-constraint
. وبعد تحدد مجموعة موارد الويب أجزاء من تطبيقنا الذي يتطلب المصادقة. ال/*
يشير إلى أن التطبيق بأكمله يتطلب المصادقة. يحدد القيد المصادق الدور الذي يحتاجه المستخدم للحصول على الموارد المحمية. يمكن أن يكون ضياح نقل بيانات المستخدم - بيانات المستخدمNONE
,CONFIDENTIAL
أوINTEGRAL
. وبعد نحن وضعناهاNONE
, ، مما يعني أن إعادة توجيه إلىSSL
غير مطلوب عند محاولة ضرب المورد المحمي.
تأكد أيضا من أن لديك:
<Realm className="org.apache.catalina.realm.MemoryRealm" />
داخل الخاص بك conf/server.xml
(Engine
الجزء).
إذا لم تكن قد غيرت أي ملفات تكوين، يرجى فحص الملف conf/tomcat-users.xml
في التثبيت الخاص بك (locate tomcat-users.xml
). يجب أن يحتوي هذا الملف على بيانات الاعتماد الخاصة بالسماح لك باستخدام Tomcat WebApp.
على سبيل المثال، لإضافة دور المدير واجهة المستخدم الرسومية للمستخدم المسمى tomcat
مع كلمة مرور s3cret
, أضف ما يلي إلى ملف التكوين المذكور أعلاه:
<role rolename="manager-gui"/>
<user username="tomcat" password="s3cret" roles="manager-gui"/>
ثم يمكنك الوصول إلى مدير Webapps الخاص بك من /manager/html
(على سبيل المثال إعادة تحميل بعد تغييرات التكوين).
اقرأ أكثر: مدير التطبيق كيف.
ثم أعد تشغيل Tomcat الخاص بك وعند الوصول إلى Webapp الخاص بك، يجب أن يطلب منك بيانات الاعتماد الصحيحة.
أنظر أيضا:
- مصادقة HTTP الأساسية في جافا في Oracle Site.
- تحديد آلية المصادقة في جافا في Oracle Site.
- تكوين عالم كيف في موقع أباتشي Tomcat
- إنشاء دور الأمن القائم في Tomcat
- كيف يمكنني استخدام المصادقة الأساسية مع Tomcat؟