سؤال

أنا أعرض تطبيق Grails لبعض الزملاء في مجال عام. حتى الآن أعمل في وضع التنمية ولم يتم نشره عبر الحرب.

أحتاج إلى تأمين التطبيق من أجل منع Onybody من التحقق منه / اللعب معه. لدي مستخدم MGMT في مكانه بالفعل ، ولكن قبل أن يرى SB أي شيء أود الحصول على حماية مثل .htpasswd. إذا كان ذلك ممكنًا ، لا أريد تكبير التطبيق نفسه باستخدام الإضافات (على سبيل المثال ، Shiro).

أي أفكار/اقتراحات؟

شكرًا جزيلاً!

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

المحلول

يمكنك استخدام مصادقة HTTP. مصادقة HTTP ميتة بسيطة للتنفيذ ، لكنها ليست آمنة للغاية أو قابلة للاستخدام. من الأفضل استخدام Shiro أو Spring-Security لحل حقيقي. ومع ذلك ، يمكن للمرشح البسيط التحقق من رأس ترخيص HTTP وإرجاع رمز الحالة 401 إذا لم يكن موجودًا. سيؤدي ذلك إلى إجبار المتصفح على ظهور مربع اسم المستخدم/كلمة المرور ، وإعادة تقديم النموذج باستخدام اسم المستخدم وكلمة المرور المشفرة في الرؤوس.

يجب أن تحتوي مرشحات Grails على اسم فئة ينتهي بـ "المرشحات" وتذهب في دليل Grails-App/Conf. هذا مثال:

class SimpleAuthFilters {
    def USERNAME = "foo"
    def PASSWORD = "bar"

    static filters = {
        httpAuth(uri:"/**") {
            before = {
                def authHeader = request.getHeader('Authorization')
                if (authHeader) {
                    def usernamePassword = new String(authHeader.split(' ')[1].decodeBase64())
                    if (usernamePassword == "$USERNAME:$PASSWORD") {
                        return true
                    }
                }
                response.setHeader('WWW-Authenticate', 'basic realm="myRealm"')
                response.sendError(response.SC_UNAUTHORIZED)
                return false
            }
        }
    }
}

نصائح أخرى

أضف ما يلي إلى $ catalina_home/conf/tomcat-users.xml وإعادة تشغيل Tomcat:

<role rolename="role1"/>
<user username="user1" password="password1" roles="role1"/>

في جذر مشروع Grails الخاص بك ، قم بتنفيذ grails install-templates. هذا سوف يضع src/templates/war/web.xml في المشروع.
(في حالة عدم وجود الملف في IDE ، قد يكون هذا خطأ. ثم ابحث عنه في نظام الملفات.)

أضف ما يلي إلى web.xml (كطفل web-app بطاقة شعار) :

<security-constraint>
  <web-resource-collection>
    <web-resource-name>
      Entire Application
    </web-resource-name>
    <url-pattern>/*</url-pattern>
  </web-resource-collection>
  <auth-constraint>
      <role-name>role1</role-name>
  </auth-constraint>
</security-constraint>

<login-config>
  <auth-method>BASIC</auth-method>
  <realm-name>Restricted Area</realm-name>
</login-config>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top