[abort()未在具有足够安全属性的JAAS登录模块上调用

问题描述 投票:0回答:1
abort()标志进行身份验证失败时,ActiveMQ Artemis代理中的[JAAS模块未调用sufficient函数。即使它抛出commit(),它也会调用FailedLoginException。但是,如果我在requisite文件中将安全属性更改为requiredlogin.config,则在抛出abort()时将调用FailedLoginException。有人知道原因吗?
java jaas activemq-artemis
1个回答
0
投票
relevant JavaDoc关于sufficient标志这样说:

[[足够] LoginModule不需要成功。如果成功,则控制权立即返回到应用程序(身份验证不会继续在LoginModule列表中进行)。如果失败,则继续在LoginModule列表中进行身份验证。

...

仅当所有

Required和Requisite LoginModules成功时,整体身份验证才会成功。如果配置了足够的LoginModule并成功,则只有RequiredRequisite LoginModule之前的那个[[Sufficient LoginModule才需要成功,才能使整体身份验证成功。如果没有为应用程序配置RequiredRequisite LoginModule,则至少必须成功完成一个SufficientOptional LoginModule。

换句话说,不需要sufficient模块就可以成功,因此,当它们失败时,似乎abort()没有被设计调用。对于它的价值,是JVM本身根据abort()的结果调用commit()login()等。 ActiveMQ Artemis中使用了登录模块这一事实并不重要。
© www.soinside.com 2019 - 2024. All rights reserved.