IIS7, podobnie jak II6 posiada możliwość autoryzacji certyfiaktem cyfrowym do strony.
Podonie jak w IIS 6, jest możliwość logowania za pomocą certyfikatów firm trzecich, jak również logowania certyfikatami skojarzonymi z kontami AD.
Problem pojawia się w momencie gdy chcemy skonfigurować takie rozwiązanie. Dla konfiguracji certyfikatem zewnętrznym do AD można znaleźć w sieci poradniki, ale do konfiguracji z uwierzytelnianiem z AD poradników nie ma. Niby wystarczy zainstalować dodatek do IIS7, włączyć w opcjach site, i już powinno działać. Ale niestety tak nie jest.
IIS7 ma poważne braki w interfejse do konfiguracji certyfikatów. O ile w opcjach całego serwera mamy możliwośc zanza`czenia uwierzytelnienia certyfikatem, to przy pojedynczym katalogu wirtualnym takiej możliwości nie ma. W związku z tym z cmd z podniesionymi uprawnieniami:
notepad %windir%\system32\inetsrv\config\applicationHost.config
Ta opcja jest ustawiana z automatu:
<Configuration>
<System.WebServer>
<Security>
<clientCertificateMappingAuthentication enabled="true" />
Wyszukujemy teraz interesujący nas site, np "Default Web Site/owa"
<location path="Default Web Site/owa">
<system.webServer>
<security>
<authentication>
<windowsAuthentication enabled="false">
<providers>
<clear />
<add value="Negotiate" />
<add value="NTLM" />
</providers>
</windowsAuthentication>
<anonymousAuthentication enabled="false" />
<digestAuthentication enabled="false" />
<basicAuthentication enabled="false" />
<clientCertificateMappingAuthentication enabled="true" />
</authentication>
<access sslFlags="Ssl, SslNegotiateCert, SslRequireCert, Ssl128" />
</security>
Gdzie linijkę <clientCertificateMappingAuthentication enabled="true" /> trzeba po prostu dopisać, bo w GUI nie ma.
Jeśli chcemy mieć ClientCertificate + Windows Integrated
<windowsAuthentication enabled="true">
<clientCertificateMappingAuthentication enabled="true" />
<access sslFlags="Ssl, SslNegotiateCert, Ssl128" />