Ответ 1
Если все сайты имеют общее имя хоста в своем URL-адресе, вы можете установить файл cookie файла (FormsAuthentication.SetAuthCookie), указав путь к файлу cookie как "/", чтобы все сайты могли видеть, что пользователь вошел в систему.
Если сайты не используют общее имя хоста, я думаю, что единственный способ получить действительно "однажды подписанный, подписанный во всем мире [в пределах вашего кольца веб-сайтов]", был бы для всей аутентификации только одним (возможно, один, посвященный аутентификации пользователя), а для других сайтов перенаправить пользователя на этот сайт для аутентификации, а затем этот сайт будет перенаправлять обратно. По сути, этот auth-сайт становится провайдером идентификации и почти точно заполняет роль провайдера OpenID (на самом деле DotNetOpenAuth можно использовать здесь для этой конкретной цели). Поскольку вам кажется, что ваша цель - позволить пользователю войти в систему с помощью OpenID, ваш поставщик OpenID на том же самом сайте auth может сам использовать OpenID для аутентификации пользователя. Ваш собственный поставщик OpenID с чистой делегацией может быть написан таким образом, чтобы он всегда отвечал сразу на запросы checkid_immediate, пока Realm в запросе auth является вашим доверенным кольцом сайтов. Таким образом, вы можете использовать единый вход на всех ваших сайтах.