2010-02-12 7 views
0

Я настраивал некоторые из моих приложений для использования Windows Identity Foundation. Я использую пассивное перенаправление, чтобы получить токены безопасности из службы маркеров безопасности. Я выполнил это, вставив WIF-код на веб-сайт входа в систему, который существовал до того, как я начал использовать WIF, а затем с помощью «Добавить ссылку STS» в приложениях.Как я могу создать токен безопасности SAML в том же приложении, которое его использует?

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

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

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

ответ

-1

Можно указать класс службы токена безопасности в своем приложении.

Однако, чтобы пользователь мог получить доступ к странице входа в приложение до того, как он получил токен, вы должны удалить deny users=? из раздела Authorization в web.config. Это позволит пользователям ударить вашу веб-страницу без маркера безопасности. Как только они войдут в систему, перенаправьте их на соответствующую страницу.

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

+0

В FAQ (http://msdn.microsoft.com/en-us/library /ee748487.aspx) ClaimsAuthenticationManager предназначен для каждого сеанса независимо от сеанса, поэтому это объясняет поведение, которое вы видите. Внедрение STS прямо в ваше приложение вызывает поражение цели федерации. Похоже, что все, что вам действительно нужно, было скорее честью, чем обычной дирекцией. Предполагая, что это так, возможно, было проще просто использовать обычную проверку подлинности форм и иметь пользовательский HttpModule, который регидратирует претензии на основе токена auth. –