Sécuriser un WebService Ajax derrière la sécurité ASP.NET 2.0
Pour faire suite au
blog de Cyril sur « Comment sécuriser un WebService Ajax » je voulais juste rappeler qu'il était possible de sécuriser un WebService Ajax simplement derrière la sécurité ASP.NET 2.0.
Les scénarios d'usage ne sont pas tout à fait identiques car dans le cas ou le WebService est sécurisé par ASP.NET 2.0 cela nécessite que l'utilisateur soit dans un contexte ou il est authentifié.
Le principe est le suivant :
-
On sécurise le WebService dans le web.config (l'URL WebService.asmx sera inatteignable tant que l'utilisateur ne sera pas authentifié)
<location path="WebService.asmx">
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>
-
On référence le WebService dans le ScriptManager de la page qui à besoin de faire l'appel au WebService (Il faut bien sûre que cette page soit aussi sous la même sécurité Web sinon la référence au WebService pour la génération du Proxy JavaScript ne fonctionnera pas)
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="WebService.asmx" />
</Services>
</asp:ScriptManager>
- Appeler simplement le WebService en JavaScript
<script type="text/javascript">
function pageLoad()
{
WebService.HelloWorld(OnComplete, null, null);
}
function OnComplete(result, userContext)
{
alert(result);
}
</script>
- Dans le code du WebService on a donc accès aux informations de l'utilisateur connecté
[WebMethod]
public string HelloWorld() {
return User.Identity.Name;
}
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :