Utile, cette page permet de vérifier le protocole d''authentification utilisé lors d'un accès à un serveur web IIS. Il permet de vérifer par exemple si l'accès se fait en Kerberos.
Copier simplement le contenu suivant dans un fichier et nommez le identity.aspx. Créez également un fichier web.config, et placez les 2 fichiers dans le même répertoire.
Le lien suivant permet de télécharger cet exemple ainsi qu'un exemple additionnel de test de délégation Kerberos.
La page frontal.aspx essaie de lire un fichier sur un serveur tierce en utilisant l'identité du client. Pour le faire fonctionner, créer un fichier de test sur un serveur distant, partagez le et donnez les permissions uniquement à l'utilisateur. S'il arrive à le lire à travers la page frontal.aspx, c'est que la délégation Kerberos fonctionne. Modifiez le paramètre identity impersonate pour voir les différences de comportement.
Download
------------------------------------------------- web.config ---------------------------------
<configuration>
<system.web>
<authentication mode="Windows"/>
<authorization>
<deny users="?" /> <!-- Deny anonymous users -->
</authorization>
<identity impersonate="false" />
<compilation debug="true"/>
</system.web>
</configuration>
---------------------------------------------- identity.aspx -----------------------
<%@ Page language="VB" %>
<%@ Import namespace = "System.web" %>
<script language="VB" runat="server">
Dim AuthLength
Dim AuthOther
public sub page_Load( Obj as Object, e as Eventargs)
Authuser.text= HttpContext.Current.User.Identity.Name().Tostring
ThreadId.text= System.Security.Principal.WindowsIdentity.Getcurrent().name().Tostring()
' Get the authentication method being used
AuthMethod.text = Request.ServerVariables("AUTH_TYPE")
AuthLength = Request.ServerVariables("HTTP_Authorization")
' If some other authentication method (other than Negotiate) gets used, call it "Other"
If LTrim(RTrim(AuthMethod.text)) <> "Negotiate" Then AuthOtherMethod
' If Negotiate gets used, go straight to the subroutine to handle it
If LTrim(RTrim(AuthMethod.text)) = "Negotiate" Then AuthNegotiateMethod
End sub
Sub AuthOtherMethod()
' Since anonymous authentication will be blank, let's be sure we realize it's enabled to
If LTrim(RTrim(AuthMethod.text)) = "" Then AuthMethod.text = "Anonymous"
End Sub
Sub AuthNegotiateMethod()
' Typically, NTLM will yield a 150 - 300 byte header, while Kerberos is more like 5000 bytes
If LEN(AuthLength) > 1000 Then AuthType.text = "Kerberos"
If LEN(AuthLength) < 1000 Then AuthType.text = "NTLM"
End Sub
</script>
<html>
<body>
Authentication Method : <asp:label id=AuthMethod runat=server /><br>
Protocole : <asp:label id=AuthType runat=server /><br>
Authenticated user: <asp:label id=Authuser runat=server /><br>
Thread identity : <asp:label id=ThreadId runat=server />
</body>
</html>