2015-06-09 2 views
44

Я пытаюсь создать что-то вроде: Клиент аутентифицируется и получает токен из пользовательского STS1, следующий клиент авторизуется с машинным ключом и выдает токен на пользовательском STS2 и получает еще один токен. С последним токеном клиент запрашивает методы в службе RP.В WCF/WIF, как объединить заявки из двух разных токенов пользовательских sts клиента

Все службы размещены в IIS и используют сценарий активной федерации. Оба STS имеют конечные точки с привязками ws2007Federation и ws2007Http, а RP используют ws2007FederationBinding с STS2 в качестве эмитента.

Если я создаю канал с помощью CreateChannelWithIssuedToken, я могу видеть только токен из STS1 и не может получить токен от STS2.

Итак, я решил передать токен из STS1 как свойство ActAs RST по запросу на токен STS2. И это не удалось - не может дешифровать токен.

  1. Как передать оба токена на STS2 и слить в них претензии?
  2. Это плохая идея - отправить с помощью RST только что извлеченные заявки из токена STS1?
+1

Что вам, возможно, понадобится, что STS2 доверяет STS1 для аутентификации и доверяет вашим приложениям STS2 – TGlatzer

+1

@TGlatzer да, оба STS доверяют друг другу, но принимают токены с урикой разных аудиторий. STS1 создает маркеры только с заявлениями о пользователе, STS2 принимает токен с машинным ключом и должен предоставлять претензии для пользователя + машины. Только сервис доверия службы STS2 – myrx

+0

Где именно вы получаете сообщение об ошибке «Невозможно дешифровать токен» - на клиенте или на STS2? –

ответ

1

Обычно вы должны использовать только один токен на каждом шагу. Поэтому, если вам нужно объединить претензии, вы захотите сделать это на этапе преобразования претензий второй STS.

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

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

http://www.livingthearchitecture.com/mixing-sso-with-existing-technologies/

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

+0

спасибо за ответ. На самом деле, я хочу сохранить оба токена - токен1 из IdS (STS1), необходимый для получения токена2 из STS2 и до окончания сеанса.btw token2 может быть сгенерирован несколько раз с разными утверждениями в течение всего сеанса сеанса до тех пор, пока токен1 не будет действительным. Да, STS2 преобразует токен1, но я до сих пор не знаю, как передать дополнительные lcaims/properties с помощью токена1 без нарушения принципов безопасности, поскольку дополнительные параметры не являются зашифрованный/подписанный с сертификатом как сгенерированный токен. – myrx

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