To što želiš zove se "prijava klijentskim sertifikatom".
Grubo prepričano plan je sledeći: klijent, nazovimo ga Petar Perić, poseduje par ključeva (privatni ključ koji ne daje nikom i drugi koji je javni i jednoznačno povezan sa privatnim) i sertifikat. Privatni i javni ključ su posebno odabrani tako da kada se neki podatak šifruje jednim, dešifrovanje se obavlja onim drugim ključem iz para. Sertifikat je potvrda koju izdaje izdavalac i kojom se potvrđuje da dati javni ključ pripada upravo nekom Petru Periću. U datoteci sertifikata se nalazi Petrov javni ključ, informacije o Petrovom indentitetu i podaci o izdavaocu sertifikata, rok važenja, ograničenja za šta Petar sme da koristi ključeve i sertifikat, oznaka politike koliko dobro izdavalac poznaje Petra i drugi podaci na osnovu kojih ti možeš sertifikat da prihvatiš ili odbaciš kao nedovoljno dobar. Sertifikat je elektronski potpisan od strane izdavaoca, i proverom tog elektronskog potpisa možemo da budemo sigurni da sertifikat nije falsifikovan.
Sertifikat možeš Petru izdati ti lično (ako imaš neki drugi način da proveriš da je upravo Petar taj koji zahteva potvrdu i možeš da obezediš pouzdanost i poverljivost procesa izdavanja i potpisivanja sertifikata), ili ga Petru može izdati sertifikaciono telo kome ti dovoljno veruješ. Izdavanje sertifikata je ozbiljan posao jer se time daje digitalni identitet Petru Periću, i neko tu mora da garantuje kako neće doći do greške. Sa tvoje strane ti biraš kojim izdavaocima ćeš verovati. U popularnim programima (nas ovde zanima IIS kao veb server jer tu ćemo proveravati Petrov identitet) podrazumevano su označeni neki izdavaoci kao pouzani, a ovaj spisak možeš da prilagodiš dodavanjem dodatnih tzv. korenskih sertifikata izdavaoca kojima želiš da veruješ.
Kada Petar poželi da se prijavi na sajt klijentskim sertifikatom, u okviru HTTPS pregovaranja, Petar (odnosno njegov veb pregledač) šalje klijentski sertifikat. Na strani servera IIS Petru pošalje kratku nasumičnu poruku koju će Petar šifrovati svojim privatnim ključem. Server dešifruje poruku Petrovim javnim ključem iz njegovog sertifikata i ako se dešifrovana poruka poklapa sa onim što je Petru poslato znamo da onaj sa druge strane ima privatan ključ koji odgovara javnom ključu iz sertifikata. Preostaje da utvrdimo da li je to Petar tako što ćemo proveriti validnost izdatog sertifikata, uvidom u sertifikat (da li ima odgovarajuće karakteristike), i proverom elektronskog potpisa sertifikata i proveru opozvanosti sertifiakta jer izdavalac ima mogućnost da opozove ranije izdati sertifikat (ako na primer Petar prijavi da mu je neko ukrao privatni ključ ili izdavalac primeti neku grešku).
Ovo je skraćeno teorijsko objašnjenje.
Praktično HTTPS pregovaranje, razmenu poruka, dešifrovanje i proveru validnosti sertifikata (karakteristika, potpisa i opozvanosti) srećom obavlja sam veb server prema konfigurisanoj listi izdavaoca od poverenja. U retkim situacijama može ti trebati nešto više od podrazumevanog, i tada nešto od ovoga moraš raditi ručno, ali to brzo postaje veoma komplikovano.
U aplikaciji sertifikatu pristupaš preko Request.ClientCertificate, a podatke o korisniku dobijaš preneseno preko standardnog User.Identity objekta.
Aplikacija mora biti na HTTPS, a za to ti treba da na serveru imaš postavljen serverski sertifikat (i par ključeva). To je isto kao i Petrov klijentski samo sada predstavlja identitet sajta na serveru, a ne identitet korisnika. Ovaj sertifikat možeš da izdaš sama sebi (Petar će onda videti upozorenje kako je to self-signed sertifikat i mora ručno da prihvati da li veruje takvom sertifikatu) ili možeš da zahtevaš sertifikat od sertifikacionog tela. Ponovo, baš kao što Petar treba da pribavi svoj digitalni identitet tako i ti treba da učiniš isto sa identitetom za svoj sajt.
Jedini resurs koji ti je dovoljan da sve ovo obaviš je
http://support.microsoft.com/kb/315588 a nadam se da je ova moja poruka od pomoći.