In javax.faces.webapp.FacesServlet
docs, si è detto,Attenzione: JACC: Per il xxx modello URL, tutti tranne i seguenti metodi sono stati scoperti: POST, GET
metodi HTTP consentiti
La specifica JSF richiede solo l'uso dei metodi GET e POST http . Se la tua applicazione web non richiede altri metodi http , come PUT e DELETE, ti preghiamo di prendere in considerazione la possibilità di limitare i metodi HTTP consentiti utilizzando gli elementi
<http-method>
e<http-method-omission>
. Per ulteriori informazioni sull'uso di questi elementi, consultare la sezione Sicurezza del servlet Java .
La mia applicazione infatti non dipende da altri metodi HTTP (tranne GET
e POST
). Pertanto, sto cercando di utilizzare <http-method>
(o <http-method-omission>
) per escludere tutti i metodi tranne GET
e POST
.
In web.xml, JAAS I vincoli di sicurezza servlet sono configurati come segue.
<security-constraint>
<display-name>AdminConstraint</display-name>
<web-resource-collection>
<web-resource-name>ROLE_ADMIN</web-resource-name>
<description/>
<url-pattern>/admin_side/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<description/>
<role-name>ROLE_ADMIN</role-name>
</auth-constraint>
<user-data-constraint>
<description/>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<security-constraint>
<display-name>UserConstraint</display-name>
<web-resource-collection>
<web-resource-name>ROLE_USER</web-resource-name>
<description/>
<url-pattern>/user_side/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<description/>
<role-name>ROLE_USER</role-name>
</auth-constraint>
<user-data-constraint>
<description/>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
L'utilizzo di questi elementi,
<http-method>GET</http-method>
<http-method>POST</http-method>
mi aspetto che tutti gli altri metodi HTTP non sono consentite.
Il server GlassFish 4.1 tuttavia, registra i seguenti avvisi sul terminale server.
Attenzione: JACC: Per il pattern URL
/user_side/*
, tutti tranne i seguenti metodi sono stati scoperti: POST, GETAttenzione: JACC: Per il pattern URL
/admin_side/*
, tutti tranne i seguenti metodi sono stati scoperti : POST, GET
Che cosa significa?
Inoltre, invece di farlo in tutti <security-constraint>
elementi, questo può essere configurato globalmente, in modo che possa essere applicato a tutte le risorse in un'applicazione e che tutti tranne GET
e POST
richieste HTTP può essere omesso cioè applicata globalmente un'applicazione - forse utilizzando un altro modello di URL specializzato specializzato come /*
?
C'è un esempio here.
<security-constraint> <display-name>WebConstraint</display-name> <web-resource-collection> <web-resource-name>test</web-resource-name> <description/> <url-pattern>/test.jsp</url-pattern> <http-method>POST</http-method> <http-method>HEAD</http-method> <http-method>PUT</http-method> <http-method>OPTIONS</http-method> <http-method>TRACE</http-method> <http-method>DELETE</http-method> </web-resource-collection> <auth-constraint> <description/> <role-name>dev</role-name> </auth-constraint> </security-constraint>
l'elemento sopra indica che la risorsa a cui fa riferimento l'url modello/test.jsp, quando si accede da tutti i metodi http tranne GET, deve essere limitato per essere visualizzato solo dagli utenti autentificati appartenenti al ruolo dev. Si noti che il vincolo di sicurezza non si applica per il metodo http GET, ma solo per gli altri metodi (POST, HEAD, PUT, ecc.).
Ho trovato l'ultima frase nel testo forte che confonde. Vuol dire che l'utilizzo di una richiesta GET
, risorse elencate nel dato url-pattern sono anche raggiungibile con utenti anonimi perché significa dire: "la sicurezza vincolo non si applica per il http metodo GET "?
> 'vincoli di sicurezza JAAS sono configurati come follows.' - quelli non sono vincoli di sicurezza JAAS, ma vincoli di sicurezza Servlet. –
Proprio su .... !!! – Tiny