2009-09-16 2 views
1

Ok, вот проблема:дело с проверкой подлинности в ASP.NET с помощью членства

У меня есть два участка: www.mysite.com и blog.mysite.com (поддельные имена сайтов), которые предполагают разделить аутентификацию. страницы Войти на www.mysite.com/login/login.aspx

Сейчас на сайте блог есть web.config с следующим разделом аутентификации:

<authentication mode="Forms"> 
    <forms timeout="50000000" 
    loginUrl="http://www.mysite.com/login/login.aspx" 
    defaultUrl="~/"/> 
</authentication> 
<authorization> 
    <deny users="?"/> 
</authorization> 

Теперь я ударил blog.mysite.com/andrey/page.aspx и перенаправляет меня к странице входа, которая находится на сайте www. Реальная проблема заключается в том, что строка запроса «reditect» будет содержать только относительный URL-адрес страницы (andrey/page.aspx), поэтому при входе в систему он попытается перенаправить меня на www.mysite.com/andrey/page.aspx, а не blog.mysite.com/andrey/page.aspx, где я начал так, конечно, все не удается.

Есть ли способ сообщить объекту Membership, чтобы он поместил полный путь в параметр строки запроса перенаправления, когда он отскакивает на страницу входа?

Спасибо! Andrey

ответ

1

Предполагая, что каждый домен имеет свой собственный web.config, я думаю, что это может сработать.

1) Создать страницу входа для обоих www.mysite.com и blog.mysite.com
2) Укажите, как в той же базе данных членства
3) Убедитесь, что оба имеют установить то же самое членство ApplicationName атрибут:

<membership><providers><add applicationName="mySite"> 

4) Убедитесь, что оба имеют ту же форму называть совокупность:

<authentication mode="Forms"><forms name="mySite"> 

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


Можете ли вы назвать FormsAuthentication.SetAuthCookie Method и вручную перенаправить на HTTP реферер?


Я только что видел это в документации FormsAuthentication.RedirectFromLoginPage

По умолчанию переменная ReturnUrl должна ссылаться на страницу в текущем приложении . Если ReturnUrl ссылается на страницу в другом приложении или на другом сервере, метод RedirectFromLoginPage перенаправляет URL-адрес в свойстве DefaultUrl . Если вы хотите разрешить переадресовывает на страницу за пределами текущего приложения , необходимо установить свойство EnableCrossAppRedirects к истинной используя enableCrossAppRedirects атрибут формы конфигурации элемента.Безопасность noteSecurity Примечание:

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

Помогает ли вообще с этим имуществом?

+0

Ну, я все еще хотел иметь одно место для входа в портал. Любые идеи, как управлять RedirectUrl? Все, что я могу сделать до сих пор, заключается в том, чтобы перепроектировать и повторно создать класс FormsAuthenticationModule, внести изменения, чтобы он переместил весь URL в redirectUrl и использовал этот модуль вместо класса FormsAuthenticationModule Microsoft. – Andrey

+0

Нет, я не знаю, как это сделать. Если обе страницы входа выглядели точно так же, кроме URL-адреса, и каждый из них мог бы войти в систему на оба сайта, это не похоже на то, что отличается от пользовательского опыта от «одного места для входа в портал» для меня. – Greg

+0

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