Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 具有用户权限的Spring oAuth2_Java_Spring_Spring Mvc_Oauth_Spring Security - Fatal编程技术网

Java 具有用户权限的Spring oAuth2

Java 具有用户权限的Spring oAuth2,java,spring,spring-mvc,oauth,spring-security,Java,Spring,Spring Mvc,Oauth,Spring Security,我对oauth非常陌生,尤其是春季oauth2。在我的项目中,目前我正在使用基本的SpringOAuth,通过xml配置启用SpringSecurityProvider 当前配置支持使用角色\客户端访问我的服务。 该数据库只是spring参考文档中指定的参考数据库 但是现在我需要在用户级别上使用用户权限扩展spring安全授权,而不是像spring默认的那样基于角色 现在我有以下表格 使用oauth2和使用SpringSecurity使用用户权限授权API的方法是什么 这是我的context

我对oauth非常陌生,尤其是春季oauth2。在我的项目中,目前我正在使用基本的SpringOAuth,通过xml配置启用SpringSecurityProvider

当前配置支持使用角色\客户端访问我的服务。 该数据库只是spring参考文档中指定的参考数据库

但是现在我需要在用户级别上使用用户权限扩展spring安全授权,而不是像spring默认的那样基于角色

现在我有以下表格

使用oauth2和使用SpringSecurity使用用户权限授权API的方法是什么

这是我的context securty.xml -> -> -> ->
在userDetails类中添加检查给定权限的方法,然后在

   <http pattern="/api/**" create-session="never"
        entry-point-ref="oauthAuthenticationEntryPoint"
        access-decision-manager-ref="accessDecisionManager"
        xmlns="http://www.springframework.org/schema/security">
        <anonymous enabled="false" />
        <intercept-url pattern="/api/**" access="ROLE_CLIENT" requires-channel="https"/>
        <custom-filter ref="resourceServerFilter" before="PRE_AUTH_FILTER" />
        <access-denied-handler ref="oauthAccessDeniedHandler" />
    </http>
而不是

<intercept-url pattern="/api/**" access="ROLE_CLIENT" requires-channel="https"/>
使用


其中hasHasSpecificRight是检查所需权限的方法

我在原则上找不到这样的函数。。那么我应该如何为那个电话写EL。你不能,因为我上面说过你必须实现你自己的clientDetails。你能告诉我你的getPrincipal方法返回的类类型吗?这样你就更容易找到正确的方向了?我使用的是spring参考文档中解释的oauth。我的db与spring引用相同。第一幅图显示了它们之间的关系。我正在使用JdbcClientDetailsService作为clientDetails。我知道您在使用什么,但是您能告诉我getPrincipal返回什么类型的对象吗?您将根据经过身份验证的用户的属性进行身份验证,用户拥有权限,您必须检查此用户拥有哪些权限,以查看他是否获得授权,但您必须找到访问允许您执行检查的对象的方法。如果您发布getPrincipal返回的类,我们可以从那里开始。这不仅仅是一行代码的问题。这是主要的对象类型:org.springframework.security.oauth2.provider.OAuth2Authentication这里是其中的内容:Principal:org.springframework.security.core.userdetails。User@364492:用户名:测试;密码:[受保护];启用:真;AccountNoExpired:正确;无需证明的凭证:真实;AccountNonLocked:true;授予的权限:角色\客户;凭据:[受保护];认证:正确;详细信息:remoteAddress=127.0.0.1,tokenValue=;授予的权限:角色\客户端
<intercept-url pattern="/api/**" access="getPrincipal().hasHasSpecificRight()" requires-channel="https"/>