Java EE Security Model Web collection: Modèle d'URL de différence " / " et "/*"


Un "/" en matière de mappage de servlet signifie servlet par défaut. Comment interprétez-vous cela en ce qui concerne un modèle d'URL intégré dans un élément web-resource-collection comme ci-dessous:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>fixmyhome</web-resource-name>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>*</role-name>
    </auth-constraint>
    <user-data-constraint>
        <transport-guarantee>NONE</transport-guarantee>
    </user-data-constraint>
</security-constraint>

Qu'en est-il de "/*'? Ce modèle d'URL n'est pas un mappage de servlet car il est entouré par la balise web-resource-collection.

J'ai également remarqué que l'utilisation de http://localhost:8081/fixmyhome/main.jsp en utilisant à la fois le motif d'URL "/" et "/*" donne les mêmes résultats - ce qui me donne le principal.page jsp. Je pensais que " / " pourrait ne pas fonctionner car il y a pas de générique.

Author: Mike Samuel, 2015-03-10

4 answers

Le <url-pattern> recherche un motif de fourmi. Les modèles disponibles sont ?, *, et **; qui correspondent à 1 caractère 0 ou plusieurs caractères, et 0 ou plusieurs répertoires, respectivement.

Dans votre cas de http://localhost:8081/fixmyhome/main.jsp, / et /* fonctionnent de la même manière car le * n'est pas une exigence pour qu'il soit un caractère.

Si vous avez un répertoire de ressources à la racine, j'imagine que votre {[0] } ressemblerait à ceci: <url-pattern>/resources/**</url-pattern>, vous permettant ainsi d'accéder à tous les sous-répertoires de le répertoire des ressources.

Cela peut aider à fournir un peu plus de clarté: https://ant.apache.org/manual/dirtasks.html

 1
Author: Nick Cromwell, 2015-03-19 20:16:38

Selon this Je dirais qu'en écrivant / vous restreignez l'accès au servlet tandis qu'en écrivant /* vous restreignez l'accès à un certain chemin. Donc, essentiellement " / " et "/ * " seraient les mêmes.

 0
Author: buftlica, 2017-05-23 12:08:27

Le modèle d'URL sous contrainte de sécurité n'appartient à aucun mappage pour servlet, il s'agit plutôt d'une expression régulière. Avec la contrainte de sécurité, vous pouvez autoriser / restreindre les utilisateurs avec le rôle mentionné (dans auth-constraint) pour le modèle d'URL donné.

 0
Author: Charu Makhijani, 2015-03-10 20:30:27

La section 12.2 de la spécification de servlet (version 3) indique ce qui suit:

  • Une chaîne commençant par un caractère ‘/’ et se terminant par un suffixe ‘/*’ est utilisée pour le mappage de chemin.
  • Une chaîne commençant par un ‘*.'préfixe est utilisé comme un mappage d'extension.
  • La chaîne vide ( "" ) est un modèle d'URL spécial qui correspond exactement à la racine du contexte de l'application, c'est-à-dire aux demandes du formulaire http://host:port/contextroot / . Dans ce cas, les informations de chemin sont’’' et le chemin du servlet et le chemin du contexte sont des chaînes vides ("").
  • Une chaîne contenant le caractère " / " indique le "défaut" de servlets de l'application. Dans ce cas, le chemin de servlet
    est l'URI de la demande moins le chemin du contexte et les informations du chemin sont null.

  • Toutes les autres chaînes sont utilisés pour les correspondances exactes seulement

 0
Author: Sandeep, 2015-03-21 16:35:07