【发布时间】:2017-04-13 17:37:30
【问题描述】:
根据SO and the web 上的其他帖子,似乎 Servlet 3+ 容器中没有内置机制来从登录用户那里检索角色,而只是检查用户是否在角色:request.isUserInRole(String)
但是有没有办法检索为应用程序定义的安全角色列表?
我觉得奇怪的是 LoginModule 必须保留委托人的凭据,但没有任何定义/与委托人的角色相关。在某些时候,当您调用isInRole() 时,容器必须能够检查用户分配的角色列表。这些信息没有暴露在任何地方吗?
我似乎找不到任何机制可以让我从我的部署描述符(或通过注释)中检索定义的角色。我的目标是 Wildfly 10/Undertow,但理想情况下是寻找与容器无关的解决方案。
这甚至可行吗?是否有任何简单的方法可以以编程方式检索我的应用程序中定义的security-roles(在我的描述符中定义或通过@DeclareRoles 注释定义)?
【问题讨论】:
-
@RC。这个问题实际上并没有回答那里的问题(我实际上在我的问题中链接到它)。建议要么做一些特定于 weblogic 的事情,要么在应用程序中手动构建角色列表。但它没有指定是否/如何从容器中检索它们。我怀疑一定有一种机制,但不确定是哪一种。
-
您可以使用this post 之类的东西来阅读所有注释。最终,尽管这不是 JEE 规范的一部分,所以没有平台无关的方式来获得它。也有一些可能的安全后果 - 我应该知道我所扮演的所有角色吗?对此不确定,但同样,规范在这里对您没有帮助。
-
@EricB。也许,这就是为什么没有结束你的问题。请注意,接受的答案不是特定于 weblogic 的(但我同意可能有点矫枉过正)
标签: java authentication jakarta-ee wildfly