Как я могу создать токен безопасности SAML в том же приложении, которое его использует?

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

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

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

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

1 ответ

Решение

Класс Service Token Service можно поместить в собственное приложение.

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

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

Другие вопросы по тегам