Удостоверяване с ръчен код
Удостоверяване. WCF
Като начало, нека създадем редовна услуга на WCF без удостоверяване, за това отваряме VisualStudio и добавяме нов проект за услугата WCF към Solution - AuthWCF. Добавете интерфейса ISecretService към създадения проект:
публичен интерфейс ISecretService
След това нека приложим този интерфейс в услугата WCF:
публичен клас SecretService: ISecretService
публичен низ GetSecretCode ()
Все още нищо сложно, методът GetSecretCode може да бъде извикан от всеки потребител. Но ние искаме този метод да се извиква само от познатите ни потребители, така че нека започнем да прилагаме процеса на удостоверяване.
Първото нещо, с което трябва да се реши, е Режим на сигурност: Transport, Message или TransportWithMessageCredential. Изберете типа защита на ниво съобщение - Съобщение.
На второ място, това е типът за удостоверяване на клиента Тип клиентски идентификационни данни, в зависимост от местоположението на услугата WCF (интернет, интранет): Windows, Certificate, Digest, Basic, UserName, NTLM, IssuedToken Избираме удостоверяване чрез вход и парола - UserName, като най-универсален тип.
След като взехме решение за обвързване Message/UserName, ще конфигурираме услугата WCF, като добавим следните редове към конфигурационния файл (Web.config):
В настройките посочихме несъществуващия CustomUserNameValidator, така че ще добавим класа CustomUserNameValidator към проекта, който е наследник на UserNamePasswordValidator и реализира процеса на удостоверяване на потребителя:
публичен клас CustomUserNameValidator: UserNamePasswordValidator
public override void Validate (низ userName, низ парола)
// Достъпът е разрешен само на потребител "ilya" с парола "pass"
ако (! (userName == "ilya" && password == "pass"))
хвърли ново FaultException ("Невалидно потребителско име или парола");
# FindKey.exe My LocalMachine
cacls.exe "C: \ Documents и Settings \ All Users \ Application Data \ Microsoft \ Crypto \ RSA \ MachineKeys \ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_xxxxxxxx-хххх-хххх-хххх-XXXXXXXXXXXX"/E/G "ASPNET": R