Как создать токен безопасности SAML в том же приложении, которое его использует? - PullRequest
0 голосов
/ 13 февраля 2010

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

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

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

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

1 Ответ

0 голосов
/ 19 февраля 2010

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

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

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

...