将JMX与Jaas一起用于jconsole身份验证

时间:2015-04-29 15:43:52

标签: java authentication authorization jmx jaas

我有以下情况:

我有一个应用程序使用JMX公开一些方法,坐在服务器上。目前,用户可以使用jconsole通过命令行连接到此。目前没有访问限制。

用户将登录到计算机并具有以活动目录形式存储的访问权限。

我希望为jmx进程添加身份验证和授权,以便在用户键入命令行时:

jconsole <processName>

它将检查其AD用户组,并确定他们是否有权读取或读取和写入受管资源。

我有一个检索AD组的解决方案,但不是我如何将它传递给JMX进程。我可以在jmx进程上设置硬编码密码文件,但我无法自动调用用户来确定他们的访问权限。

当前JMX进程是否可以执行回调以确定给定用户在尝试连接时的访问权限?如果没有,是否有允许我这样做的现有工具和框架(例如JBoss)?

1 个答案:

答案 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()方法中有一个对授权逻辑模块的回调。