//*********************************************************************
// © Tous droits réservés.
// Exemple de code pour un module HTTP
//*********************************************************************
using System.Security.Principal;
using System.Diagnostics;
namespace MyCompany.Hosting.Samples
/// Description sommaire pour CustomAuthModule
publicclassCustomAuthModule : IHttpModule
public CustomAuthModule()
#region IHttpModule Members
/// Libérer toute ressource
/// Initialisation du module
///<param name="context"></param>
publicvoid Init(HttpApplication application)
application.AuthenticateRequest += newEventHandler(application_AuthenticateRequest);
/// Déléguer pour authentifier une requête
///<param name="context"></param>
///<param name="context"></param>
void application_AuthenticateRequest(object sender, EventArgs e)
HttpApplication application = sender asHttpApplication;
Debug.Assert(application != null);
// Le client a-t-il envoyé les renseignements d'autorisation
if (application.Context.Request.ServerVariables["HTTP_AUTHORIZATION"] == null)
// Redirige le client pour envoyer les justificatifs d'identité HTTP de base
application.Response.StatusCode = 401;
application.Response.AddHeader("WWW-Authenticate", "Basic");
application.Response.End();
// Récupérer la chaîne d'authentification
string authString = application.Request.ServerVariables["HTTP_AUTHORIZATION"];
// Si la méthode d'authentification est de base
if (authString.StartsWith("basic", StringComparison.InvariantCultureIgnoreCase))
string[] justificatifs d'identité;
bool isValidutilisateur = false;
// Décoder les justificatifs d'identité
credentials = DecodeBase64String(authString.Substring(6)).Split(':');
// Les justificatifs d'identité devraient présenter deux cellules
// credentials[0] est le nom d'utilisateur
// credentials[1] est le mot de passe
Debug.Assert(credentials.Length == 2);
// ****************************
// Effectuer la vérification ici
// ****************************
// isValidUser = VotreMéthodeIdentificaation(credentials[0], credentials[1]);
newGenericIdentity(credentials[0], authString),
newstring[] { "role_name" });
// Définir cet utilisateur pour la session
application.Context.User = user;
/// Décode une chaîne chiffrée Base64
///<param name="base64EncodedString"> </param>
privatestring DecodeBase64String(string base64EncodedString)
UTF-8Encoding encoder = newUTF-8Encoding();
Decoder decoder = encoder.GetDecoder();
byte[] bytesToDecode = Convert.FromBase64String(base64EncodedString);
int charCount = decoder.GetCharCount(bytesToDecode, 0, bytesToDecode.Length);
char[] decodedChars = newchar[charCount];
decoder.GetChars(bytesToDecode, 0,
bytesToDecode.Length, decodedChars, 0);
returnnewString(decodedChars);
thrownewException("Error dans DecodeBase64String : " + e.Message);