Единый OpenID в поддоменах - PullRequest
4 голосов
/ 30 декабря 2010

Я использую OpenID почти так же, как здесь, в StackOverflow, для аутентификации моих пользователей. Что мне действительно нужно, так это то, что OpenID работает во всех поддоменах моего сайта.

Сайт ведет себя так же, как и Киджи, в том, что у каждого региона есть свой собственный поддомен

  • calgary.example.com
  • toronto.example.com
  • vancouver.example.com
  • и т.д.

Когда пользователь входит в «Калгари», а затем входит в «Торонто», он будет вынужден «дать разрешение» провайдеру, что приведет к созданию нового OpenID и, соответственно, к новому входу.

Мое приложение "может" иметь несколько OpenID под одной учетной записью, но управлять им будет громоздко.

Есть ли способ заставить провайдера связываться с доменом верхнего уровня и впоследствии работать во всех поддоменах?

Я использую DotNetOpenAuth.

Единственная мысль, которая у меня возникает, - это всегда заставлять пользователя входить в систему с http://example.com, а затем использовать аутентификацию форм domain = ".example.com", чтобы разрешить навигацию по всем поддоменам.

1 Ответ

5 голосов
/ 30 декабря 2010

Да. Установите для свойства Realm элемента управления ASP.NET или вашего IAuthenticationRequest (если вы делаете это программно) значение "https://*.example.com".". Обратите внимание, что схема может быть http или https, но она должна соответствует любой схеме в свойстве ReturnTo, которая (по умолчанию) будет схемой, используемой в текущем запросе.

Обратите внимание, что если у вас уже есть пользователи из Google, это одноразовое изменение вашей области приведет к тому, что Google сгенерирует совершенно новые идентификаторы для ваших пользователей, поэтому они все потеряют доступ к своим учетным записям. Поэтому очень важно принять решение и сохранить единую Царство на все времена, иначе вам придется перепрыгивать через большие обручи, чтобы иметь возможность привязать пользователей к их учетным записям позже, когда вы измените их.

Но не беспокойтесь о самом подстановочном знаке. Если вы установите https://*.example.com в качестве своего царства, все ваши отдельные сайты, соответствующие этому шаблону, получат такой же идентификатор Google.

...