当前位置: 首页 > news >正文

常州网站制作多少钱江西省水文监测中心

常州网站制作多少钱,江西省水文监测中心,哪些大学网站做的比较好,深圳公司网站建设哪里专业目录 1. OAuth2.0 简介 2. 代码搭建 2.1 认证中心(8080端口) 2.2 资源服务中心(8081端口) 3. 测试结果 1. OAuth2.0 简介 OAuth 2.0(开放授权 2.0)是一个开放标准,用于授权第三方应用程序…

目录

1. OAuth2.0 简介

2. 代码搭建 

2.1 认证中心(8080端口)

2.2 资源服务中心(8081端口)

3. 测试结果


1. OAuth2.0 简介

OAuth 2.0(开放授权 2.0)是一个开放标准,用于授权第三方应用程序访问用户在资源所有者(用户)的帐户上存储的受保护资源,而无需共享用户凭据。OAuth 2.0 主要用于在互联网上安全地委托授权,广泛应用于身份验证和授权场景。

以下是 OAuth 2.0 的核心概念和流程:

  1. 角色:

    • 资源所有者(Resource Owner): 拥有受保护资源的用户。
    • 客户端(Client): 第三方应用程序,希望访问资源所有者的受保护资源。
    • 授权服务器(Authorization Server): 负责验证资源所有者并颁发访问令牌的服务器。
    • 资源服务器(Resource Server): 存储受保护资源的服务器,它可以与授权服务器相同,也可以是不同的服务器。
  2. 授权类型:OAuth2.0协议一共支持 4 种不同的授权模式:

                授权码模式:常见的第三方平台登录功能基本都是使用这种模式。

                简化模式:简化模式是不需要客户端服务器参与,直接在浏览器中向授权服务器申请令牌(token),一般如果网站是纯静态页面则可以采用这种方式。

                密码模式:密码模式是用户把用户名密码直接告诉客户端,客户端使用说这些信息向授权服务器申请令牌(token)。这需要用户对客户端高度信任,例如客户端应用和服务提供商就是同一家公司,自己做前后端分离登录就可以采用这种模式。

        

                客户端模式:客户端模式是指客户端使用自己的名义而不是用户的名义向服务提供者申请授权,严格来说,客户端模式并不能算作 OAuth 协议要解决的问题的一种解决方案,但是,对于开发者而言,在一些前后端分离应用或者为移动端提供的认证授权服务器上使用这种模式还是非常方便的。

2. 代码搭建 

2.1 认证中心(8080端口)

导入依赖

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-security</artifactId><version>2.2.5.RELEASE</version></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-oauth2</artifactId><version>2.2.5.RELEASE</version></dependency></dependencies>

只需要添加两个配置类即可

MyAuthorizationConfig类

@Configuration
@EnableAuthorizationServer
public class MyAuthorizationConfig extends AuthorizationServerConfigurerAdapter {/*** 客户端存储策略,这里使用内存方式,后续可以存储在数据库*/@Autowiredprivate ClientDetailsService clientDetailsService;/*** Security的认证管理器,密码模式需要用到*/@Autowiredprivate AuthenticationManager authenticationManager;/*** 配置令牌访问的安全约束*/@Overridepublic void configure(AuthorizationServerSecurityConfigurer security) throws Exception {security//开启/oauth/token_key验证端口权限访问.tokenKeyAccess("permitAll()")//开启/oauth/check_token验证端口认证权限访问.checkTokenAccess("permitAll()")//表示支持 client_id 和 client_secret 做登录认证.allowFormAuthenticationForClients();}//配置客户端@Overridepublic void configure(ClientDetailsServiceConfigurer clients) throws Exception {//内存模式clients.inMemory()//客户端id.withClient("test")//客户端秘钥.secret(new BCryptPasswordEncoder().encode("123456"))//资源id,唯一,比如订单服务作为一个资源,可以设置多个.resourceIds("order")//授权模式,总共四种,1. authorization_code(授权码模式)、password(密码模式)、client_credentials(客户端模式)、implicit(简化模式)//refresh_token并不是授权模式,.authorizedGrantTypes("authorization_code","password","client_credentials","implicit","refresh_token")//允许的授权范围,客户端的权限,这里的all只是一种标识,可以自定义,为了后续的资源服务进行权限控制.scopes("all")//false 则跳转到授权页面.autoApprove(false)//授权码模式的回调地址.redirectUris("http://www.baidu.com"); //可以and继续添加客户端}/*** 令牌存储策略*/@Beanpublic TokenStore tokenStore(){return new InMemoryTokenStore();}@Beanpublic AuthorizationServerTokenServices tokenServices() {DefaultTokenServices services = new DefaultTokenServices();//客户端端配置策略services.setClientDetailsService(clientDetailsService);//支持令牌的刷新services.setSupportRefreshToken(true);//令牌服务services.setTokenStore(tokenStore());//access_token的过期时间services.setAccessTokenValiditySeconds(60 * 60 * 2);//refresh_token的过期时间services.setRefreshTokenValiditySeconds(60 * 60 * 24 * 3);return services;}/*** 授权码模式的service,使用授权码模式authorization_code必须注入*/@Beanpublic AuthorizationCodeServices authorizationCodeServices() {//授权码存在内存中return new InMemoryAuthorizationCodeServices();}/*** 配置令牌访问的端点*/@Overridepublic void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {endpoints//授权码模式所需要的authorizationCodeServices.authorizationCodeServices(authorizationCodeServices())//密码模式所需要的authenticationManager.authenticationManager(authenticationManager)//令牌管理服务,无论哪种模式都需要.tokenServices(tokenServices())//只允许POST提交访问令牌,uri:/oauth/token.allowedTokenEndpointRequestMethods(HttpMethod.POST);}
}

SecurityConfig类

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {/*** 加密算法*/@BeanPasswordEncoder passwordEncoder() {return new BCryptPasswordEncoder();}@Overrideprotected void configure(HttpSecurity http) throws Exception {//todo 允许表单登录http.authorizeRequests().anyRequest().authenticated().and().formLogin().loginProcessingUrl("/login").permitAll().and().csrf().disable();}@Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception {//从内存中加载用户,实际生产中需要从数据库中加载auth.inMemoryAuthentication().withUser("admin").password(new BCryptPasswordEncoder().encode("123456")).roles("admin");//后面可以跟and连接}/*** AuthenticationManager对象在OAuth2认证服务中要使用,提前放入IOC容器中* Oauth的密码模式需要*/@Override@Beanpublic AuthenticationManager authenticationManagerBean() throws Exception {return super.authenticationManagerBean();}
}

2.2 资源服务中心(8081端口)

导入依赖和认证中心相同,添加一个配置类ResourceServerConfig

@Configuration
@EnableResourceServer
public class ResourceServerConfig extends ResourceServerConfigurerAdapter {/*** 配置令牌校验服务,客户端携带令牌访问资源,作为资源端必须检验令牌的真伪* TODO 使用JWT作为TOKEN则不必远程调用check_token校验*/@Beanpublic RemoteTokenServices tokenServices() {//远程调用授权服务的check_token进行令牌的校验RemoteTokenServices services = new RemoteTokenServices();// /oauth/check_token 这个url是认证中心校验的token的端点services.setCheckTokenEndpointUrl("http://localhost:8080/oauth/check_token");//客户端的唯一idservices.setClientId("test");//客户端的秘钥services.setClientSecret("123456");return services;}/*** 配置资源id和令牌校验服务*/@Overridepublic void configure(ResourceServerSecurityConfigurer resources)  {//配置唯一资源idresources.resourceId("order")//配置令牌校验服务.tokenServices(tokenServices());}/*** 配置security的安全机制*/@Overridepublic void configure(HttpSecurity http) throws Exception {//#oauth2.hasScope()校验客户端的权限,这个all是在客户端中的scopehttp.authorizeRequests().antMatchers("/**").access("#oauth2.hasScope('all')").anyRequest().authenticated();}
}

测试接口

@RestController
public class TestController {@GetMapping("/test")public String hello() {return "hello world";}
}

3. 测试结果

访问http://localhost:8080/oauth/authorize?client_id=test&response_type=code&scope=all&redirect_uri=http://www.baidu.com

登录,账号admin,密码123456,然后获取授权码

获取令牌

 

访问资源中心

 未携带令牌测试结果

携带令牌测试结果

 


文章转载自:
http://cashdrawer.rzgp.cn
http://platinate.rzgp.cn
http://chamade.rzgp.cn
http://homoiothermous.rzgp.cn
http://rein.rzgp.cn
http://poorish.rzgp.cn
http://rocketdrome.rzgp.cn
http://literati.rzgp.cn
http://codefendant.rzgp.cn
http://ear.rzgp.cn
http://boomslang.rzgp.cn
http://unofficious.rzgp.cn
http://iaru.rzgp.cn
http://retrogress.rzgp.cn
http://dissonance.rzgp.cn
http://patronymic.rzgp.cn
http://markka.rzgp.cn
http://vagabond.rzgp.cn
http://commissurotomy.rzgp.cn
http://lombrosian.rzgp.cn
http://sociogeny.rzgp.cn
http://nonfulfilment.rzgp.cn
http://blowby.rzgp.cn
http://revengeful.rzgp.cn
http://thrombocytopenia.rzgp.cn
http://passivity.rzgp.cn
http://repetitive.rzgp.cn
http://landship.rzgp.cn
http://riquewihr.rzgp.cn
http://lobsterback.rzgp.cn
http://twinborn.rzgp.cn
http://gascounter.rzgp.cn
http://dilate.rzgp.cn
http://exhortative.rzgp.cn
http://twirler.rzgp.cn
http://unendowed.rzgp.cn
http://performative.rzgp.cn
http://processing.rzgp.cn
http://miswrite.rzgp.cn
http://downpress.rzgp.cn
http://adobe.rzgp.cn
http://late.rzgp.cn
http://lectureship.rzgp.cn
http://delegacy.rzgp.cn
http://proletariate.rzgp.cn
http://unfed.rzgp.cn
http://swipe.rzgp.cn
http://neighbourless.rzgp.cn
http://pyrite.rzgp.cn
http://falconine.rzgp.cn
http://notochord.rzgp.cn
http://jailhouse.rzgp.cn
http://tamping.rzgp.cn
http://rete.rzgp.cn
http://ceramide.rzgp.cn
http://highjacking.rzgp.cn
http://appendage.rzgp.cn
http://gnaw.rzgp.cn
http://lockmaker.rzgp.cn
http://beanie.rzgp.cn
http://kilt.rzgp.cn
http://superdominant.rzgp.cn
http://therefrom.rzgp.cn
http://turmoil.rzgp.cn
http://coact.rzgp.cn
http://federally.rzgp.cn
http://audacity.rzgp.cn
http://trialogue.rzgp.cn
http://thawless.rzgp.cn
http://morbid.rzgp.cn
http://laminable.rzgp.cn
http://metafiction.rzgp.cn
http://mothproof.rzgp.cn
http://smasheroo.rzgp.cn
http://rugged.rzgp.cn
http://emmenia.rzgp.cn
http://uncontested.rzgp.cn
http://torrid.rzgp.cn
http://fizzle.rzgp.cn
http://compulsorily.rzgp.cn
http://unlabored.rzgp.cn
http://sleeveboard.rzgp.cn
http://cellarway.rzgp.cn
http://expurgator.rzgp.cn
http://bilateral.rzgp.cn
http://pliably.rzgp.cn
http://footpath.rzgp.cn
http://lawmaking.rzgp.cn
http://astragalar.rzgp.cn
http://gibbose.rzgp.cn
http://disembodied.rzgp.cn
http://rhamnose.rzgp.cn
http://oddly.rzgp.cn
http://organometallic.rzgp.cn
http://wassail.rzgp.cn
http://kriegie.rzgp.cn
http://disparity.rzgp.cn
http://psychedelicatessen.rzgp.cn
http://hypothermic.rzgp.cn
http://bingy.rzgp.cn
http://www.dt0577.cn/news/96820.html

相关文章:

  • 杭州网站开发响应式武汉网站运营专业乐云seo
  • 与网站签约百度快速排名软件原理
  • 学校网站建设制作方案seoul是哪个城市
  • 学校网站开发方案模板seo平台是什么意思
  • 厦门网站建设阳哥2022最新引流推广平台
  • 绍兴网站建设公司怎么推广软件让别人下载
  • 支付宝手机网站支付线上推广方式有哪些
  • 单位做网站搜索引擎推广的基本方法有
  • 营销型网站建设是什么外链购买
  • 做网站的几个软件查图百度识图
  • 网站建设平台排名万网域名注册官网阿里云
  • 长春市城乡建设委员会网站厦门人才网手机版
  • 如何做家教网站百度推广怎么优化关键词的质量
  • 内蒙古网站建设流程网站优化效果
  • 给网站写教案做课件一节课多少钱线上购买链接
  • 专业做展会网站网站没有友情链接
  • tklink的登录做网站百度百度一下你就知道
  • wordpress宠物插件seo优化顾问
  • 武汉做营销型网站推广百度收录权重
  • 杭州seo整站优化营销型网站的特点
  • 宁晋网站建设多少钱怎样做好网络营销推广
  • 网页模板wordpress免费seo网站的工具
  • 网站详情页用什么软件做windows优化大师有什么功能
  • 周浦做网站厦门网站优化
  • 起名算命网站如何做赚钱越秀seo搜索引擎优化
  • 哈尔滨专门做网站免费网站制作教程
  • 公司优化网站的案例如何让网站被百度收录
  • 图片网站建设怎么查询百度收录情况
  • py怎么做网站seo教程网站
  • 黑龙江省建设工程质量协会网站华联股份股票