Аутентификация запроса конечной точки WCF через несколько «хранилищ» - PullRequest
0 голосов
/ 19 марта 2009

Можно ли настроить одну конечную точку службы WCF для аутентификации в нескольких хранилищах аутентификации? то есть, если имя пользователя и пароль предоставлены, проверьте Custom DB, в противном случае попробуйте Windows Auth.

Справочная информация:

У меня есть служба A WCF, которая вводится через прокси-клиент в службу B. WCF. Служба B может зависеть от службы C и т. Д.

Пользовательский запрос к Сервису A поступает и аутентифицируется с использованием пользовательского UserNamePasswordValidator, а ClaimSet создается с использованием пользовательской реализации IAuthorizationPolicy.

Аутентификация прошла успешно, и на A вызывается операция сервиса. Эта операция выполняет вызов в службу B через введенный прокси.

Запрос службы B затем проходит через стек Auth / Authz, но не выполняется, поскольку учетные данные не установлены. Как Служба А, называемая Службой Б, я доверяю ей, поэтому хочу, чтобы авторизация прошла успешно, без необходимости передавать имя пользователя и пароль исходного абонента.

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

Ответы [ 2 ]

1 голос
/ 20 марта 2009

Мне удалось получить этот ответ от контакта в Microsoft:

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

Несколько режимов безопасности на одной конечной точке - это то, что должно появиться в .NET 4.0.

0 голосов
/ 20 марта 2009

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

Когда мне нужно было иметь несколько «ключей» для аутентификации, я вместо этого создал собственный класс ClientCredential.

Извините за краткий ответ, но мне нужно уйти из дома, чтобы приступить к работе ... Работа является таким препятствием для ТАКОГО времени:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...