我有以下情况:
我有一个应用程序使用JMX公开一些方法,坐在服务器上。目前,用户可以使用jconsole通过命令行连接到此。目前没有访问限制。
用户将登录到计算机并具有以活动目录形式存储的访问权限。
我希望为jmx进程添加身份验证和授权,以便在用户键入命令行时:
jconsole <processName>
它将检查其AD用户组,并确定他们是否有权读取或读取和写入受管资源。
我有一个检索AD组的解决方案,但不是我如何将它传递给JMX进程。我可以在jmx进程上设置硬编码密码文件,但我无法自动调用用户来确定他们的访问权限。
当前JMX进程是否可以执行回调以确定给定用户在尝试连接时的访问权限?如果没有,是否有允许我这样做的现有工具和框架(例如JBoss)?
答案 0 :(得分:0)
这是通过使用Jaas自定义登录模块解决的,然后在命令行中使用以下内容弹跳并重新启动JMX进程:
-Dcom.sun.management.jmxremote.login.config=Sample
-Djava.security.auth.login.config=sample_jaas.config
其中sample_jaas.config的设置如下:
Sample {
sample.module.SampleLoginModule required;
};
并且我的SampleLoginModule实现了LoginModule接口,并且在其login()方法中有一个对授权逻辑模块的回调。