L’autre jour, j’étais à la recherche de bonnes pratiques pour l’implémentation d’une page de connexion utilisant ASP.NET MVC. Cela faisait un petit moment que je n’avais pas eu l’occasion d’en faire. J’avais besoin de me rafraîchir la mémoire.
Après avoir consulté quelques pages sur le sujet, un exemple provenant de Microsoft utilisait l’attribut AllowAnonymous sur l’action de contrôleur de connexion. Ça a piqué ma curiosité, car la majorité des autres exemples n’en faisait pas l’usage.
La première conclusion à tirer de ceci est que la majorité de développeurs ayant publié leur code sur le web ne connaît rien à la sécurité web. Je ne suis moi même pas un expert. Toutefois, il s’agit d’un fait à assumer lorsqu’il est question de sécurité informatique.
En deuxième lieu, il ne faut jamais prendre du code du web sans s’assurer de comprendre ce qu’il essaie d’accomplir. C’est encore plus important lorsqu’il est question de sécurité et d’authentification web.
Pour faire simple et pour revenir à mes moutons, l’attribut AllowAnonymous est un mécanisme permettant au développeur d’autoriser l’accès, à une requête anonyme (lire non authentifiée), à une action de contrôleur ou à toutes les actions d’un contrôleur.
Un exemple classique de cela peut être tiré directement de MSDN.
Dans cet exemple, un appel aux actions Manage et Logoff vont retourner un code HTTP 401. Au contraire, l’action Register sera publiquement accessible. Cela tombe sous le gros bon sens, n’est-ce pas?
Il faut savoir que cette façon de faire est l’un des mécanismes à votre disposition pour sécuriser votre application web. Par exemple, un scénario plus avancé, uniquement accessible aux développeurs ASP.NET 5, serait d’avoir recours à OWIN pour implémenter la sécurité de votre application.
C’est une question de besoin, réellement.
Ceci étant dit, la seule chose à savoir c’est qu’il ne faut pas recourir à la sécurisation en utilisant le web.config. Il s’agit de la pire option, car elle assume que vous sécurisez l’accès à des chemins physiques. Une action de contrôleur peut être accessible par plusieurs chemins. Les choses peuvent déraper rapidement dans ce scénario.