我有一个系统,正在运行混合Java和另一种语言编写的应用程序,并且我希望该应用程序有一个登录会话。
通过单次登录会话
我目前使用CAS作为SSO登录解决方案。
根据我的调查,看来CAS not 没有提供一个会话。尽管它具有TGT形式的会话,但该会话是应用程序内部的,不打算供客户端应用程序使用。
如果所有应用程序都是Java,那么我可以使用像Redis这样支持的Spring Sessions来实现目标。
但是我的某些应用程序是用其他语言编写的,因此我将无法使用Java会话。
我有一些解决方案的想法
a)使用CAS,并以某种方式使用TGT会话。看着https://stackoverflow.com/questions/6272536/tgt-expiring-if-we-are-using-app1-and-not-using-other似乎很难做到。
b)使用CAS并使用代理PGT以更可控的方式访问TGT。对于使用活动使会话保持活动状态,我并没有进行太多研究。
c)使用现成的聚会会话机制,该机制为我提供了创建/扩展和终止会话的API,并使用每种语言编写了钩子以使用此会话。不幸的是我还没有找到这种机制。
d)使用Java会话,并为非Java应用程序编写一个允许验证JSESSION id的API,并向非Java语言编写钩子以读取JSESSION cookie并对该API进行调用。有效地使用Spring Sessions编写我自己的c)版本
e)用Java为非Java应用程序编写一个反向代理,以验证会话,然后调用实际的http端点,并添加包含会话信息的标头(例如JWT)。在应用程序中编写钩子以读取这些JWT并对其进行验证(例如,使用HMAC)。
感谢您对以上选项的任何输入,因为我没有找到通过搜索SO或网络解决上述问题的明确解决方案。