WIF STS с несколькими приложениями, не синхронизированными
Предположим, у меня есть два веб-приложения и одна служба STS: 1. Портал администрирования, где я могу предоставлять привилегии пользователям. 2. Портал продаж, где пользователи могут делать вещи, основываясь на этих привилегиях.
Теперь предположим, что у меня есть STS, который предоставляет токены безопасности с истечением 8 часов для портала продаж. Токен содержит утверждения, которые, помимо прочего, содержат информацию о привилегиях для пользователя.
Теперь представьте себе сценарий, когда на портале администрирования пользователю удаляется привилегия, а изменения сохраняются в базе данных. Поскольку пользователь уже вошел в портал продаж с токеном безопасности, срок действия которого еще не истек, портал продаж не будет знать, что привилегия была удалена.
Вопрос - как справиться с этим сценарием. Для меня единственное решение, которое я вижу здесь, это полное удаление STS, но я ищу более разумный способ справиться с этим.
Есть ли лучший подход к этой проблеме несинхронизации?
1 ответ
Удаление STS немного радикально:-). У вас есть для этого причина (SSO, федерация и т. Д.). У вас есть несколько вариантов: уменьшить время истечения токена до разумного значения для изменчивости ваших изменений (8 часов может быть чрезмерным) или перенести конфиденциальную информацию об авторизации (например, привилегии) в приложение, чтобы она проверялась каждый раз,
Вы можете сделать "обогащение требований" на уровне приложения (через AuhtenticationManager
в WIF) и по-прежнему использовать модель утверждений из кода вашего приложения.
Технически нет синхронизации между приложением и STS. Токен представляет собой снимок пользовательских атрибутов на момент выдачи и действует до истечения срока его действия.