2009-03-19 2 views
0

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

фона:

У меня службы WCF А, который вводится с клиентским прокси для службы WCF B. Service B может иметь зависимость от службы C и т.д.

Запрос пользователя для обслуживания приходит в и аутентифицируется с использованием пользовательского UserNamePasswordValidator, а ClaimSet построен с использованием пользовательской реализации IAuthorizationPolicy.

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

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

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

+0

ваше название немного пропущено, вы написали wfc, а не wcf – Peter

ответ

1

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

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

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

0

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

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

Извините за короткий ответ, но мне нужно уйти из дома, чтобы добраться до работы ... Работа такая помеха SO время :)

Смежные вопросы