Вот проблема. Я использую ASP.NET Forms Authentication для веб-сайта с типом баланса счета. Когда пользователь входит в систему, он может произвести оплату по своей учетной записи, перейдя на сторонний веб-сайт (3pw). Когда пользователь щелкает, чтобы сделать платеж, вот что происходит:
- Мой сайт делает запрос 3pw, передавая идентификатор.
- 3pw отправляет запрос на мой сайт, передавая идентификатор плюс идентификатор безопасности.
- Я проверяю вещи ....
- Случается больше вещей, о которых вам не нужно заботиться ...
Когда я тестирую этот процесс, я вижу в веб-журналах, что я попадаю на страницу одноразовых платежей на моем сайте. Используя что-то вроде Live HTTPHeaders, я вижу запрос к веб-сайту 3pw (шаг № 1). Затем в веб-журналах отображается запрос от 3pw на мой сайт (шаг № 2), но следующая запись в журналах - это новый запрос на страницу входа для моего сайта.
login.aspx?ReturnUrl=mypage.aspx
3pw не знает, как обрабатывать перенаправление на страницу входа в систему, а затем терпит неудачу. Вопрос в том, почему мой сайт считает, что пользователь больше не проходит аутентификацию, когда запрос поступает с 3pw на mypage.aspx? Я смотрел мои куки и куки, которые были созданы, когда я вошел в систему, все еще там. Разве это не говорит серверу, что я все еще аутентифицированный пользователь?
Вот что у меня есть в моем web.config
<authentication mode="Forms">
<forms defaultUrl="~/somepage.aspx"
loginUrl="~/login.aspx"
protection="All"
timeout="30"
name="MyCookieName"
enableCrossAppRedirects="true"
requireSSL="true"/>
</authentication>
<location path="manage">
<system.web>
<authorization>
<allow roles="UserRole" />
<deny users="?" />
</authorization>
</system.web>
</location>
Прошедшие проверку пользователи находятся в роли UserRole. Страница, которую запрашивает 3pw, находится в каталоге Manage. 3pw не написан на .NET, и я не могу контролировать его конфигурацию.
Обновление:
Я прошу прощения, если я не настолько ясен, как мог бы быть. Позвольте мне повторить шаги.
- Пользователь заходит на мой сайт и проходит аутентификацию.
- Пользователь заходит на страницу однократного платежа на моем сайте.
- На странице одноразового платежа пользователь нажимает кнопку «Внести платеж».
- Кнопка «Внести платеж» отправляет запрос GET 3pw, передавая идентификатор в строке запроса.
- 3pw видит запрос и отправляет запрос POST на страницу подтверждения на моем веб-сайте.
Это сообщение на странице подтверждения о том, что происходит ошибка. Согласно файлу журнала, запрос на страницу подтверждения перенаправляется на страницу входа. Мой веб-сервер видит поступивший запрос, пытается обработать страницу, но понимает, что пользователь не прошел проверку подлинности, и перенаправляет запрос на вход в систему. Эта часть смущает меня, потому что я думал, что сервер будет проверять, прошел ли пользователь аутентификацию, и, поскольку они все еще существуют, потому что cookie все еще существует, обслуживают запрашиваемую страницу.
Может быть, я не до конца понимаю весь процесс, но, так как запрос к 3pw, инициированный моим зарегистрированным пользователем, не будет ли подан мой запрос на мой сайт от 3pw?