Обеспечение приложения Devel Grails с одним htpasswd, как пароль

StackOverflow https://stackoverflow.com/questions/4268306

Вопрос

Я показываю приложение Grails к некоторым коллегам в общественном домене. До сих пор я работаю в режиме Evel и не развернул во время войны.

Мне нужно обеспечить приложение для того, чтобы он не проверил его / играть с ним. У меня уже есть пользователь 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"/>

У вас Root Coot Project Execute grails install-templates. Отказ Это будет место SRC / шаблоны / 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