spring-oauth-server实践(2-1)问题澄清-关于资源、角色和scope

oauth_client_details -----resource_ids------scope

user_------previllage(role)

关于资源的解释

https://andaily.com/blog/?cat=19

resource用于将系统提供的各类资源进行分组管理,每一个resource对应一个resource-id, 而一个client details至少要有一个resource-id(对应OauthClientDetails.java中的resourceIds字段).

在spring-oauth-server的security.xml配置文件的70行左右, 你会看到两行配置,如下:

<!--unity resource server filter-->
<oauth2:resource-server id="unityResourceServer" resource-id="unity-resource" token-services-ref="tokenServices"/>

<!--mobile resource server filter-->
<oauth2:resource-server id="mobileResourceServer" resource-id="mobile-resource" token-services-ref="tokenServices"/>

这儿就是配置resource的地方, 看见里面的两个resource-id值.

在这配置往上, 能看见两个<http>的配置, 一个的pattern为/m/**, 另一个为/unity/**, 这就是资源与Spring Security整合后的配置, 注意每个<http>配置里的 ROLE_UNITY与ROLE_MOBILE, 这对应Spring Security的权限; 截图如下:

有了以上基础, 及下看我们要添加一个自己的resource, 假设resource-id = myResource, url pattern为/my/api/**, 权限为ROLE_MY_RESOURCE, scope为 read; 其配置如下:

1.添加<oauth2:resource-server> , resource-id=myResource, 如下:

<oauth2:resource-server id="myResourceServer" resource-id="myResource" token-services-ref="tokenServices"/>

注意, id值需要唯一
2.添加<http>配置, 如下:

<http pattern="/my/api/**" create-session="never" entry-point-ref="oauth2AuthenticationEntryPoint"
      access-decision-manager-ref="oauth2AccessDecisionManager" use-expressions="false">
    <anonymous enabled="false"/>

    <intercept-url pattern="/my/api/**" access="ROLE_MY_RESOURCE,SCOPE_READ"/>

    <custom-filter ref="myResourceServer" before="PRE_AUTH_FILTER"/>
    <access-denied-handler ref="oauth2AccessDeniedHandler"/>
    <csrf disabled="true"/>
</http>

说明: 一个<resource-server>可以配置多个<http>, 使用不同的url pattern

OK, 配置完成, 新增resource: myResource; 这时候, 所有以/my/api/** 开头的URL请求都将受到 OAUTH2的保护, 及下来在业务中创建client details, 记得把resourceIds设置为myResource,且要有ROLE_MY_RESOURCE的权限.

时间: 2024-10-14 19:47:30

spring-oauth-server实践(2-1)问题澄清-关于资源、角色和scope的相关文章

Spring Security3.1实践

收拾材料,收拾思路 3.1.Spring Security3.1的2种常见号码大全办法 Ø  用户信息和权限存储于数据库,而资本和权限的对应选用硬关键词挖掘工具编码装备. Ø  细分角色和权限,并将角色.用户.资本.权限均都存储于数据库中.而且自定义过滤器,替代本来的FilterSecurityInterceptor过滤器:并分别完成AccessDecisionManager.UserDetailsService和InvocationSecurityMetadataSourceService,并

MaxScale Binlog Server实践

MaxScale Binlog Server实践 简介 Part1:写在最前 在之前的博文中有说到MaxScale,作为中间件,配合MHA使用或者主从使用可实现读写分离和负载均衡,今天简单介绍下MaxScale作为Binlog Server来减少主从延迟的问题:MySQL的主从架构中,链式拓扑的架构比较容易出现主从延迟的问题.本文着重介绍MaxScale作为Binlog Server是如何降低主从延迟的. MaxScale配合MHA请移步至: http://suifu.blog.51cto.co

Asp.net MVC + EF + Spring.Net 项目实践(目录)

用4篇博客来搭一个MVC的框架,可能对初学者会有一些帮助,大家共勉吧.我觉得对于中小型项目,这个框架可能还是有一定的用处的,希望能够帮助到一些人. Asp.net MVC + EF + Spring.Net 项目实践(一)添加项目结构 Asp.net MVC + EF + Spring.Net 项目实践(二)  通过数据库表生成Entity Asp.net MVC + EF + Spring.Net 项目实践(三)  调整Entity结构 Asp.net MVC + EF + Spring.Ne

Java程序员,这两本书必须看:Spring实战+深入实践SpringBoot

<Spring实战> 本书从核心的Spring.Spring应用程序的核心组件.Spring集成3个方面,由浅 入深.由易到难地对Spring展开了系统的讲解,包括Spring之旅.装配Bean.最小 化Spring XML配置.面向切面的Spring.征服数据库.事务管理.使用Spring MVC 构建Web应用程序.使用Spring Web Flow,保护Spring应用.使用远程服务.为 Spring添加REST功能.Spring消息.使用JMX管理Spring Bean以及其他Spri

Spring Boot干货系列:(六)静态资源和拦截器处理

Spring Boot干货系列:(六)静态资源和拦截器处理 原创 2017-04-05 嘟嘟MD 嘟爷java超神学堂 前言 本章我们来介绍下SpringBoot对静态资源的支持以及很重要的一个类WebMvcConfigurerAdapter. 正文 前面章节我们也有简单介绍过SpringBoot中对静态资源的默认支持,今天详细的来介绍下默认的支持,以及自定义扩展如何实现. 默认资源映射 Spring Boot 默认为我们提供了静态资源处理,使用 WebMvcAutoConfiguration

Google I/O 2013 最佳实践(1) - res资源篇

最近在看Google I/O 2013 App源码,记录一下新学习到的新功能与方法,此篇先从res资源文件开始.先来看看目录结构: drawable-ldrtl-mdpi: ldrtl是layout-direction-right-to-left的缩写,意味着布局方式从右到左,主要是为了适配阿拉伯语用.这应该是API17,即Android4.2上新出的功能. drawable-nodpi: 此目录资源的文件会提供给任意密度的屏幕使用,系统不会因为屏幕密度的不同而放大该图片. drawable-s

SQL Server中查询用户的对象权限和角色的方法

--SQL Server中查询用户的对象权限和角色的方法 -- 查询用户的object权限 exec sp_helprotect NULL, 'sa' -- 查询用户拥有的role exec sp_helpuser 'public' -- 查询哪些用户拥有指定的系统role exec sp_helpsrvrolemember 'sysadmin' -- 可查询嵌套role WITH tree_roles as ( SELECT role_principal_id, member_principa

Spring Mvc Web 配置拦截规则与访问静态资源 (三)

拦截规则配置 1. *.do <!-- Processes application requests --> <servlet> <servlet-name>appServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name

Spring Security简明实践及相关国际化处理

别人的都是最佳实践,因为我目前的设置没有按照参考文档推荐,还是采用DelegatingFilterProxy,所以我只能说简明实践.先贴我的applicationContext-security.xml <?xml version="1.0" encoding="UTF-8"?> <beans:beans xmlns="http://www.springframework.org/schema/security" xmlns:b

Spring AOP基础实践

一.代码实践 先上代码,Spring AOP的demo,见下面的小例子. 1 package demo.spring; 2 3 import org.aspectj.lang.annotation.After; 4 import org.aspectj.lang.annotation.Aspect; 5 import org.aspectj.lang.annotation.Before; 6 import org.aspectj.lang.annotation.Pointcut; 7 impor