在我们的 Apereo CAS 5.3.8 保护应用程序中,我们需要在登录后显示一个屏幕,该屏幕显示一个下拉菜单,其中包含一些用户必须从中选择一个选项的值。仅在满足某些条件时才需要显示屏幕,具体取决于某些用户属性。在某些情况下,我们需要的所有属性都在登录后加载,但在其他情况下,我们需要根据用户的选择加载其他属性。然后必须将用户选择转换为我们希望存储在 CAS 断言中的其他一些用户属性,以便客户端应用程序可以访问用户属性并根据这些属性做出决策。
为了显示这个额外的屏幕,我们创建了一个自定义的多因素提供程序。加载的属性被传递给一个PrincipalFactory
实现。
除了用户下拉选择之后发生的部分之外,几乎所有东西都可以正常工作。问题是如何分两步加载主要属性?我尝试更新自定义操作中的principal
andauthentication
对象,该操作在用户选择后触发,但它不起作用,它始终保留旧主体,并在登录后立即加载属性。
我认为问题可能是由于属性被传递给 aPrincipalFactory
并且可能它们只被写入一次并且变得不可变。我尝试使用 aAuthenticationTransactionManager
和 aAuthenticationResultBuilder
但无法添加额外的计算属性。
任何指导将不胜感激。