从 Weblogic 获取 Spring Security 的安全角色
Posted
技术标签:
【中文标题】从 Weblogic 获取 Spring Security 的安全角色【英文标题】:Get Security Roles From Weblogic for Spring Security 【发布时间】:2015-04-13 07:22:10 【问题描述】:我目前正在编写一个位于 weblogic 服务器上的 web 应用程序。
我正在使用 Weblogic 的安全容器来验证对应用程序的访问。在 weblogic.xml 我有映射:
<wls:security-role-assignment>
<wls:role-name>PORTAL_USER</wls:role-name>
<wls:principal-name>users</wls:principal-name>
然后我授予任何具有 PORTAL_USER 访问权限的人访问我的应用程序。
使用 spring security 控制对各种页面的访问时出现问题。
我正在使用以下方式授予权限:
<bean class="org.springframework.security.core.authority.mapping.SimpleAttributes2GrantedAuthoritiesMapper">
<property name="convertAttributeToUpperCase" value="true"/>
</bean>
但这似乎使应用程序中的角色成为权限,例如当用户登录时将拥有权限:
ROLE_PORTAL_USER。
因此,我的问题是如何从 weblogic 获取角色并授予用户这些角色。例如,如果用户具有在 weblogic 中定义的安全角色 Admin,我将如何在我的应用程序中读取该角色并赋予他们适当的角色。
【问题讨论】:
【参考方案1】:我遗漏了一些非常明显的东西。
事实证明,如果您使用 Eclipse 自动部署到 weblogic,那么它不会使用 weblogic 中定义的映射,而只会使用应用程序中定义的映射。
如果您将应用程序部署到服务器并选择自定义角色,则角色(只要在应用程序中声明)将出现在应用程序中。
从 Weblogic 获取 Java EE 应用程序中的用户角色:
1 在 web.xml 中定义:
<security-role>
<role-name>Admin</role-name>
</security-role>
<security-role>
<role-name>Author</role-name>
</security-role>
2 在 Weblogic 上部署应用程序 - 使用 自定义角色 进行安全设置
3 在 Weblogic 中设置角色 - 必须与应用中定义的名称相同
4 个角色应该出现在应用程序中
【讨论】:
“如果将应用程序部署到服务器并选择自定义角色,那么角色(只要在应用程序中声明)将出现在应用程序中”是什么意思。我在 web.xml 中定义了 MyRole,我部署并选择了自定义角色,然后呢?它是否应该在控制台中可见以进行进一步映射?以上是关于从 Weblogic 获取 Spring Security 的安全角色的主要内容,如果未能解决你的问题,请参考以下文章
将war部署到weblogic版本(weblogic 12.2.1.3)时,Spring Integration应用程序部署失败
使用 spring-boot 和 Weblogic 公开 SOAP Webservice
如何在 spring-security-oauth2 中的资源服务器中获取自定义 UserDetailService 对象?