سؤال

لقد قمت بالفعل بإنشاء ملف قاعدة بيانات المستخدم باستخدام أمر apache's htpasswd. يستخدم هذا الملف الآن من قبل العديد من التطبيقات الأخرى مثل Apache والتخريب.

يتم إنشاء المستخدمين في ذلك مثل هذا:

htpasswd /path/to/users.htpasswd peter

ملف المستخدم هذا هو عالمي، وليس لكل دليل.

كيف يمكنني جعل Tomcat 6 استخدم هذا الملف نفسه كعالم أمان؟

هل كانت مفيدة؟

المحلول

هناك خياران:

  1. استخدم Apache كإنجان أمامي Tomcat (باستخدام إما MOD_JK أو MOD_PROXY_AJP) وأبشي يقوم بالمصادقة. يمكنك أن تجد تفاصيل حول كيفية القيام بذلك هنا

  2. إذا كنت تريد أن يقوم Tomcat بقيام المصادقة، فأنت بحاجة إلى استخدام OT شيء آخر غير ملف HTPassWD. هناك 4 طرق لحفظ بيانات اعتماد المستخدمين - استخدام قاعدة البيانات، JNDI / LDAP، ملف XML أو موفر JAAS. يمكنك أن تقرأ عن كل الخيارات في تكوين عالم كيف.

نصائح أخرى

الأكثر مماثلة ل htpasswd قد يكون memoryRealm.وبعد كان لدي مشاكل في نفسي لإيجاد مثال بسيط كيفية استخدامه، لذلك سأقوم بنشر رمز مثال سهل هنا:

  1. قم بإعداد دور واسم المستخدم وكلمة المرور في Tomcat-Users.xml

  2. يجب أن يحتوي 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>
    
  3. أضف هذا إلى ملف 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 الخاص بك، يجب أن يطلب منك بيانات الاعتماد الصحيحة.

أنظر أيضا:

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top