Java 安全管理器找出谁请求访问

Posted

技术标签:

【中文标题】Java 安全管理器找出谁请求访问【英文标题】:Java security manager find out who asks for access 【发布时间】:2011-08-13 11:03:48 【问题描述】:

我写了一个自己的安全管理器,我的问题是,我在我的程序中运行其他用户的代码,我必须确保没有滥用。

所以我的问题是:我如何能够在安全管理器的方法中找到,谁在 checkXXXXX() 中要求访问 - 方法。

谢谢

【问题讨论】:

【参考方案1】:

不,在一般情况下没有简单的方法可以做到这一点。

(如果您在 Web 容器中运行,这可能会提供一种获取当前请求的身份验证详细信息的方法。但这听起来不像您的用例。)

我想您可以尝试多种方式来实现这一点,但您需要小心防止代码欺骗用户身份。一种想法是将每个用户身份与不同的线程组相关联,并让您的安全管理器阻止在其他线程组中创建线程;阅读 Thread(ThreadGroup group, Runnable target, String name) 的 javadoc,注意它关于线程组检查的内容。

【讨论】:

感谢您的回答。我已经使用安全密钥阻止在其他线程中创建线程,您必须在其中注册自己的线程,您才能创建一个。但在一种情况下,你帮了我很多,因为我现在知道安全管理器是由线程自己调用的,所以我可以找出线程组和线程 ID。所以我做同样的事情用安全密钥注册线程是没有问题的!谢谢!

以上是关于Java 安全管理器找出谁请求访问的主要内容,如果未能解决你的问题,请参考以下文章

配置元件--HTTP授权管理器

java 用集合完成随机点名器和库存管理案例

如何使用 Java 确定在 z/OS 上哪个安全管理器处于活动状态?

使用java访问任务管理器中的内存

如何请求访问 Azure DevOps 中的项目?

localhost 拒绝了我们的连接请求?