Обеспечение приложения Devel Grails с одним htpasswd, как пароль
-
28-09-2019 - |
Вопрос
Я показываю приложение 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>