|
Пользовательский ServiceAuthenticationManager
|
|||
---|---|---|---|
#18+
Пытаюсь ограничить доступ к службе с привязкой NetTcpBinding(SecurityMode.Transport) и TcpClientCredentialType.Windows определенной группой пользователей Windows. В найденных примерах в интернете все почему-то пользуются переопределением ServiceAutorizationManager или развешивают атрибут PrincipalPermission. Но ведь вроде как правильно будет определять на этапе аутентификации, а не авторизации, разрешено ли пользователю подключаться к сервису? Собственно с реализацией каркаса пользовательского ServiceAuthenticationManager и его подключением проблем нет. Но вот что делать в ServiceAuthenticationManager.Authenticate() чтобы определить кто именно ломится и как узнать принадлежит ли он к нужной нам группе? Никто не пытался реализовывать свой ServiceAuthenticationManager? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2010, 15:38 |
|
Пользовательский ServiceAuthenticationManager
|
|||
---|---|---|---|
#18+
Пока нашел такой выход из ситуации: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2010, 11:58 |
|
Пользовательский ServiceAuthenticationManager
|
|||
---|---|---|---|
#18+
Однако кривое решение. В журнале сообщений имеем: InvalidOperationException: Метод проверки подлинности в ServiceAuthenticationManager вернул значение NULL. Если в коллекции не нужен возврат политик авторизации, необходимо вернуть пустой объект ReadOnlyCollection. А если выполнить рекомендации, то аутентификация проходит без проблем. Так как по нормальному ограничить доступ к сервису на этапе аутентификации? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2010, 14:02 |
|
Пользовательский ServiceAuthenticationManager
|
|||
---|---|---|---|
#18+
LexxxxxОднако кривое решение. В журнале сообщений имеем:InvalidOperationException: Метод проверки подлинности вServiceAuthenticationManager вернул значение NULL.Если в коллекции не нужен возврат политик авторизации,необходимо вернуть пустой объект ReadOnlyCollection.А если выполнить рекомендации, то аутентификация проходит без проблем. Так как по нормальному ограничить доступ к сервису на этапе аутентификации? ServiceAuthenticationManager необходим для аутентификации, то есть нужен только для того, чтобы сказать что пользователь действительно тот, за кого себя выдает. Вам же необходимо выполнять проверку прав доступа к сервису, а это задача уже не аутентификации, а авторизации. Для разграничения прав доступа к сервису используется ServiceAuthorizationManager . Попробуйте использовать его, только не на уровне Claimns, а на уровне разграничения по ролям. В этом случае у вас будут возвращаться на клиент нормальная ошибка AccessDeny. Если нужна какая то более гибкая настройка, то ройте в сторону разграничения прав на основе заявок (Claimns). ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2010, 14:48 |
|
Пользовательский ServiceAuthenticationManager
|
|||
---|---|---|---|
#18+
heeepiServiceAuthenticationManager необходим для аутентификации, то есть нужен только для того, чтобы сказать что пользователь действительно тот, за кого себя выдает. Вам же необходимо выполнять проверку прав доступа к сервису, а это задача уже не аутентификации, а авторизации. А я подумал что уже здесь можно отбить пользователя, так как известно уже кто ломится к сервису. Просто не совсем (а скорее совсем не) понимаю что и как работает в WCF. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2010, 15:42 |
|
Пользовательский ServiceAuthenticationManager
|
|||
---|---|---|---|
#18+
Никто не подскажет, как в Код: plaintext 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2010, 11:36 |
|
Пользовательский ServiceAuthenticationManager
|
|||
---|---|---|---|
#18+
Никто не подскажет, как в Код: plaintext 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2010, 11:40 |
|
|
start [/forum/topic.php?fid=19&fpage=23&tid=1397528]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
68ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 175ms |
0 / 0 |