Protezione devel Grails applicazione con singolo htpasswd come la password
-
28-09-2019 - |
Domanda
sto mostrando un'applicazione graal ad alcuni colleghi su un dominio pubblico. Finora sto lavorando in modalità devel e non sono stati distribuiti attraverso la guerra.
Ho bisogno di garantire l'applicazione al fine di mantenere onybody da estrarlo / giocare con esso. Ho un Mgmt utente in atto già, ma prima di sb vede niente mi piacerebbe avere Htpasswd-come protezione. Se possibile, non voglio per ingrandire la domanda stessa con i plugin (ad esempio, shiro).
Qualche idea / suggerimento?
Grazie mille!
Soluzione
Si potrebbe utilizzare l'autenticazione HTTP. HTTP l'autenticazione è morto semplice da implementare, ma non è molto sicuro o utilizzabile. È meglio utilizzare shiro oa molla di sicurezza per una soluzione reale. Detto questo, un semplice filtro può controllare per un'intestazione HTTP Authorization e restituire il codice di stato 401 se non presente. Che forzare il browser per far comparire una scatola di nome utente / password, e inviare nuovamente il modulo con il nome utente e la password codificata nelle intestazioni.
filtri Grails deve avere un nome di classe che termina con "Filtri" e andare nella directory graal-app / conf. Ecco un esempio:
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
}
}
}
}
Altri suggerimenti
Aggiungere il seguente a $ CATALINA_HOME / conf / tomcat-users.xml e riavviare Tomcat:
<role rolename="role1"/>
<user username="user1" password="password1" roles="role1"/>
A vostra radice del progetto Grails, eseguire grails install-templates
. Questo posto sarà src / templates / guerra / web.xml nel progetto.
(Nel caso in cui il file non è visibile nel vostro IDE, questo potrebbe essere un bug. Poi trovano nel file system.)
Aggiungere il seguente per web.xml (come figlio del tag 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>