|
Самая простая аутентификация средствами WCF SOAP
|
|||
---|---|---|---|
#18+
Подскажите, пожалуйста, максимально простые примеры кода аутентификации в WCF SOAP наподобие FormsAuthentication ASP.NET. Просьба не писать ссылки на сторонние ресурсы, т.к. гуглом пользоваться умею. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2015, 16:05 |
|
Самая простая аутентификация средствами WCF SOAP
|
|||
---|---|---|---|
#18+
anc32, Я не очень понял вопроса. В каком смысле нужно "подобное"? У WCF нет собственных UI средств, разве что на клиенте может всплывать окно выбора Security Card, но это только для одного мало популярного способа аутентификации. Напишите конкретнее, что вам нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2015, 07:15 |
|
Самая простая аутентификация средствами WCF SOAP
|
|||
---|---|---|---|
#18+
У меня сервер сервиса и клиенты расположены на разных машинах под управлением различных ОС. Какие есть варианты реализации аутентификации в таком случае и как они реализуются только в коде (без .config)? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2015, 11:25 |
|
Самая простая аутентификация средствами WCF SOAP
|
|||
---|---|---|---|
#18+
anc32У меня сервер сервиса и клиенты расположены на разных машинах под управлением различных ОС. Какие есть варианты реализации аутентификации в таком случае и как они реализуются только в коде (без .config)? есть разные методы, всё от задачи зависит. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2015, 13:50 |
|
Самая простая аутентификация средствами WCF SOAP
|
|||
---|---|---|---|
#18+
anc32, Вариантов много. Если говорить совсем кратко, то, при реализации аутентификации в WCF, нужно иметь в виду 2 аспекта: - Как credentials передаются с клиента на сервис - Как они проверяются на стороне сервиса Способы передачи делят на 2 группы: - Передача на уровне транспортного протокола и средствами этого протокола - Передача внутри SOAP сообщения (т.е. независимо от протокола - при этом на уровне протокола может осуществляться, например, шифрование). Среди методов передачи средствами протокола, я бы назвал следующие (только надо помнить, что разные транспорты поддерживают разные способы): - Basic/Username - передача пользователя и пароля в открытом виде - Digest/Ntlm/Windows - передача пользователя и пароля, но в защищенном виде (передаются не сами пароли, а их производные функции, причем от случайных данных). - Certificate - передача сертификата (ну т.е. конечно же передается не сам сертификат, а некий результат применения закрытого ключа. Если не ошибаюсь, то делается просто ЭЦП). У методов на основе SOAP добавляется еще один вариант: - Issued Token - это когда клиент сначала аутентифицируется у третьей стороны, получает токен, а затем с этим токеном ходит на сервис. Что касается методов проверки переданных данных, то тут ситуация следующая: - при передаче пользователя и пароля WCF автоматически проверяет их средствами Windows (т.е. аутентифицируют локально или в Active Directory). И у вашего кода нет возможности вмешаться в этот процесс. - есть только 2 законных варианта вмешаться в этот процесс: а) Вы передаете аутентификацию на уровне сообщений методом UserName б) Вы передаете аутентификацию на уровне сообщений методом Basic. НО (!) только если хостите ваш сервис не под IIS В этих 2-х случаях вы можете написать свой собственный метод проверки, создав класс наследник от UserNamePasswordValidator Варианты аутентификации с помощью сертификатов и Issued Token я не рассматриваю - они сложнее обычной парольной аутентификации. Но даже без них - море вариантов. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2015, 09:25 |
|
Самая простая аутентификация средствами WCF SOAP
|
|||
---|---|---|---|
#18+
Ну и по поводу примера кода... Вы хотели обойтись без конфигурационных файлов (не знаю почему - мне кажется с конфигами удобнее. Но вам решать, конечно). Ниже пример настройки аутентификации в коде. Я взял самую простую - Windows-аутентификацию и работу поверх WSHttpBinding (чтобы не настраивать SSL). Вот контракт сервиса: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Реализация (чтобы показать аутентификацию разных пользователей): Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Код хоста: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
Примеры кода клиента: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2015, 10:09 |
|
|
start [/forum/topic.php?fid=19&msg=39001097&tid=1396867]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 263ms |
total: | 384ms |
0 / 0 |