Проверка подлинности форм и поддомен - PullRequest
2 голосов
/ 23 апреля 2011

Я пытаюсь использовать проверку подлинности с помощью форм, которая будет работать как для моего домена верхнего уровня, так и для поддоменов.

например, если я войду в систему с этим доменом: mydomain.com и затем перейду на www.mydomain.com я хочу иметь возможность идентифицировать пользователя, который вошел в систему на mydomain.com (это то же самое приложение).

В моем файле web.config я использую следующее:

<authentication mode="Forms">
  <forms loginUrl="~/Account/LogOn" domain="mydomain.com" timeout="2880" />
</authentication>

Это проект mvc , и я получаю идентификатор пользователя со следующим API :

HttpContext.Current.User.Identity.Name

Создание файла cookie проверки подлинности формы выполняется следующими API после выполнения входа в систему openid для пользователя:

FormsAuthentication.SetAuthCookie(userName, createPersistentCookie);

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

Я что-то не так делаю?

Спасибо, Лиор

Ответы [ 3 ]

3 голосов
/ 26 апреля 2011

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

1 голос
/ 13 января 2012

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

Если вы установите куки в domain.com, он будет виден на sub.domain.com Однако если вы установите его на sub.domain.com, он не будет виденна domain.com

Это проблема безопасности из-за файлов cookie, и вам придется рассмотреть ее, помимо настроек элемента <form>, которые связаны с проверкой / отклонением файла cookie для аутентификации, когда вывам нужно будет иметь domain='domain.com', что вы уже делаете.

В дополнение ко всему этому, если на поддомене у вас другое приложение, вам нужно будет явно определить машинный ключ, который будет таким же.Вы можете сгенерировать себе несколько ключей здесь: http://aspnetresources.com/tools/machineKey

1 голос
/ 23 апреля 2011

Этот вопрос не совсем совпадает с вашим, но похоже, что это решение, которое вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...