Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Single sign on Apereo CAS分两步加载用户属性并存储它们以供属性释放_Single Sign On_Cas_Jasig_Apereo - Fatal编程技术网

Single sign on Apereo CAS分两步加载用户属性并存储它们以供属性释放

Single sign on Apereo CAS分两步加载用户属性并存储它们以供属性释放,single-sign-on,cas,jasig,apereo,Single Sign On,Cas,Jasig,Apereo,在我们的Apereo CAS 5.3.8受保护的应用程序中,我们需要在登录后显示一个屏幕,该屏幕显示一个下拉列表,其中包含一些值,用户必须从中选择一个选项。仅当满足某些条件时才需要显示屏幕,具体取决于某些用户属性。在某些情况下,我们需要的所有属性都在登录后加载,但在其他情况下,我们需要根据用户的选择加载其他属性。然后,必须将用户选择转换为我们希望存储在CAS断言中的一些其他用户属性,以便客户端应用程序可以访问用户属性并根据这些属性做出决策 为了显示这个额外的屏幕,我们创建了一个定制的多因素提供者

在我们的Apereo CAS 5.3.8受保护的应用程序中,我们需要在登录后显示一个屏幕,该屏幕显示一个下拉列表,其中包含一些值,用户必须从中选择一个选项。仅当满足某些条件时才需要显示屏幕,具体取决于某些用户属性。在某些情况下,我们需要的所有属性都在登录后加载,但在其他情况下,我们需要根据用户的选择加载其他属性。然后,必须将用户选择转换为我们希望存储在CAS断言中的一些其他用户属性,以便客户端应用程序可以访问用户属性并根据这些属性做出决策

为了显示这个额外的屏幕,我们创建了一个定制的多因素提供者。加载的属性被传递给
PrincipalFactory
实现

除了用户下拉选择后发生的部分外,几乎所有操作都正常。问题是如何分两步加载主属性?我尝试更新自定义操作中的
主体
身份验证
对象,该操作在用户选择后触发,但不起作用,它总是在登录后立即加载旧主体的属性

我认为问题可能是因为属性被传递给
原则性部门
,并且它们可能只被写入一次,并且变得不可变。我尝试使用
AuthenticationTransactionManager
AuthenticationResultBuilder
但无法添加额外的计算属性


非常感谢您的指导。

A请参阅标签
jasig
我想您没有使用最新的CAS版本,那么您使用的CAS版本是什么?CAS 3?CAS 4?它是Apereo CAS 5.3.8Oh,那么我建议添加标签
Apereo
,该项目不再由
jasig
维护。如果将CAS版本添加到问题中也会很好。您知道吗?我不是cas专家,但我已经定制发布了principal,但不是分两步进行的。解决方案可能是在下拉选择后在自定义操作上生成cookie,然后在服务上读取此cookie。是的,我知道属性发布,我已经在这样做了。但是,我需要这样做两次,并将属于第二步的属性添加到先前加载的属性之上。