Есть много решений для этого.Одна вещь, чтобы рассмотреть, что вы подразумеваете под «необязательным SSO».Если под этим вы подразумеваете, что ваше приложение теперь будет принимать идентификационные данные от сторонних поставщиков (STS, LiveID или Google Ids клиента), в дополнение к вашим собственным именам пользователей / паролям;тогда самый чистый и элегантный подход заключается в следующем:
- Заявки включают ваше приложение (которое, если вы сегодня используете Forms AuthN, скорее всего, будет иметь нулевое влияние на ваш код)
- Представьте STS (ваше собственное), которое будет одновременно «провайдером федерации» (это означает, что это будет мост между вашим приложением и всеми сторонними провайдерами идентификации);и сам Identity Provider (аутентификация ваших пользователей, как вы делаете сейчас).
1 сравнительно легко.Для # 2 вам нужно приобрести STS.В зависимости от того, где вы размещаете хостинг, вы можете использовать стандартные STS, такие как ADFS (v2), или вам может потребоваться пользовательский (например, IdentityServer на CodePlex)
Менее элегантный (и менее перспективный в будущем).) решение, вероятно, потребует некоторых программных манипуляций с WIF (как описано в в этом посте ).
Кстати, "URI аудитории" - это не URL в вашем приложении.Он предназначен для идентификации потребителя токена, выданного STS.