Werking Basic Authentication

In IIS is het mogelijk om gebruik te maken van Basic Authentication. De werking van Basic Authentication (BA) is als volgt.

1) De browser maakt een request naar een pagina die BA gebruikt
2) IIS stuurt een 401 naar de browser met een 'WWW-Authenticate' header. Door deze header weet de browser dat er inloggegevens nodig zijn.
3) De browser toont een login-scherm waarin de gebruiker zijn credentials kan invoeren
4) De browser plakt de gebruikersnaam en wachtwoord aan elkaar met daartussen een dubbele punt (:). Vervolgens maakt hij hier een Base64-string van. Daarna maakt de browser een Authentication header aan met als waarde "Basic ", bijv: Authorization: Basic QXNwZWN0XHJzLjExNDE0Ny1saXZlOkZkNyoxWCV4
5) IIS decrypt de Base64-string en gaat na of de opgegeven gebruiker voldoende rechten heeft. Zo ja, dan stuurt IIS een response header terug met code 200, oftewel OK. Als de gebruiker onbekend is, wordt wederom het login-scherm getoond.

Schematisch ziet dit er als volgt uit:



In IIS kan ook het domein en de realm worden opgegeven bij BA. Als er geen domein is ingevuld, dan gebruikt IIS het domein van de machine waarop hij geïnstalleerd is. Op dit domein worden de ingevoerde credentials gevalideerd.

Naast het domain kan ook de realm worden opgegeven. Een realm is de benaming van een gedeelte van een site. Als er geen realm wordt opgegeven dan wordt de URL als realm gebruikt.
De realm wordt gebruikt door de browser om de credentials te cachen. De brwoser gebruikt de realm in combinatie met de URL om de credentials te cachen. Als de gebruiker navigeert naar een pagina met een andere realm en hiervoor zijn nog geen credentials ingevoerd, dan toont de browser een login-scherm.

bronnen: 
http://serverfault.com/questions/67979/what-is-the-technical-definition-of-a-realm

https://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/f85f0f16-4fea-4852-980c-4982d53c9948.mspx?mfr=true

Reacties

Populaire posts van deze blog

[SQL Server] varchar vs nvarchar

MS Sql 70-461: Chapter 5

[C#] Class serialiseren en deserialiseren