Аутентификация веб-сервиса WCF на основе AD групп

Вы могли записать свой собственный файл сценария сервера, который берет параметр имени файла и параметр содержания.

сценарий сервера нашел бы требуемый файл и заменил бы его содержание новым.

Запись JavaScript, который наслаждается информацией поджигателя и получает полезные данные, была бы хитрой частью.

я лично попросил бы, чтобы команда разработчиков в поджигателе предоставила функцию, это не должно быть слишком трудно для них.

Наконец, Ajax отправляет пару имени файла/содержания в php файл, который Вы создали.

5
задан Bruno Machado - vargero 1 August 2013 в 14:28
поделиться

1 ответ

Вам необходимо разделять две концепции:

  • АУТЕНТИФИКАЦИЯ - это процесс определения того, кто звонит вам, и проверки того, что он действительно является тем, кем он себя называет; это можно сделать, используя имя пользователя / пароль, учетные данные Windows (он уже аутентифицировался в своем Windows-окне через вход в систему) или потребовав у вызывающего абонента некоторую информацию (сертификат).

  • АВТОРИЗАЦИЯ - это процесс - один раз вы знаете , кто вам звонит, чтобы определить, что этот вызывающий может сделать (или чего он не может)

Чтобы использовать группы Active Directory, вам необходимо использовать режим безопасности в WCF, который поддерживает Windows учетные данные. Самый простой - использовать учетные данные Windows с самого начала, что является значением по умолчанию для wsHttpBinding и netTcpBinding - в данном случае вызывающий всегда будет передавать свои учетные данные Windows при каждом вызове, и вы можете проверить их на стороне сервера, просмотрев ServiceSecurityContext.Current.WindowsIdentity :

WindowsIdentity caller = ServiceSecurityContext.Current.WindowsIdentity;

Это хорошо работает в сценарии интрасети - все находится за корпоративным брандмауэром и в любом случае аутентифицируется на своих машинах. Чтобы включить это, просто используйте привязку wsHttp или netTcp (в этом случае я бы рекомендовал netTcp).

Другой немного более сложный случай - когда ваш клиент представляет сертификат X.509, а затем вы сопоставляете его на стороне сервера существующему пользователю AD в вашей сети. Однако это довольно сложно.

После того, как ваш вызывающий абонент аутентифицирован, например, вы знаете, кто звонит, вы можете использовать обычную модель безопасности на основе ролей для ограничения привилегий. Просто добавьте [PrincipalPermission (.... )] атрибутов ваших методов, которые вы хотите защитить, и если пользователь не соответствует ни одному из этих требований, будет сгенерировано исключение безопасности, и метод не будет выполнен.

    [PrincipalPermission(SecurityAction.Demand, Role = "Administrators")]
    [PrincipalPermission(SecurityAction.Demand, Name = "JohnDoe")]
    public string SayHello(string caller)
    {
     ......
    }

У вас может быть несколько атрибутов «PrincipalPermission», и они сопоставляются вместе в режиме «ИЛИ» - если какой-либо из них соответствует текущему вызывающему абоненту, ему будет разрешено совершить вызов.

На странице 4 этой статьи Основы безопасности WCF приведены дополнительные сведения об использовании безопасности на основе ролей.

Марк

10
ответ дан 13 December 2019 в 22:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: