假设我有两个Web应用程序和单个STS服务: 1.管理门户,我可以向用户授予权限。 2.销售门户,用户可以根据这些权限执行操作。
现在假设我有STS为销售门户提供8小时到期的安全令牌。令牌包含声明,其中包含有关用户权限的信息,等等。
现在想象一下这样一种场景,即删除了用户的管理门户权限,并且更改已保存到数据库中。由于用户已使用尚未过期的安全令牌登录到销售门户,因此销售门户将不会知道该权限已被删除。
问题是 - 如何处理这种情况。对我来说,我在这里看到的唯一解决方案是完全删除STS,但我正在寻找一种更智能的方法来处理这个问题。
对于这种不同步的问题,是否有更好的方法?
答案 0 :(得分:1)
删除STS有点激烈:-)。你有它的原因(SSO,联邦等)。您有几个选择:将令牌的到期时间减少到合理的变化波动值(8小时可能过长),或将敏感授权信息(例如权限)移动到应用程序,以便每次都检查。
您可以在应用级别(通过WIF中的自定义AuhtenticationManager
)执行“声明权限扩充”,并仍使用应用代码中的声明模型。
从技术上讲,应用和STS之间没有同步。令牌是发布时用户属性的快照,有效期到期满。