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

陕西网站建设设计公司/百度搜索排行

陕西网站建设设计公司,百度搜索排行,长春网站建设及推广,永久免费生成app网站现在任何连接都要经过网关,所以在网关校验access_token的正确性,当access_token正确后,才转发到相应的服务。 当获取access_token后,每次前端访问都要带上这个access_token。 依次启动服务,eureka---->user------>oauth--…

现在任何连接都要经过网关,所以在网关校验access_token的正确性,当access_token正确后,才转发到相应的服务。

当获取access_token后,每次前端访问都要带上这个access_token。

依次启动服务,eureka---->user------>oauth---------->zull顺序启动服务

现在我们访问127.0.0.1:9999/user/hello 这个接口

到现在为止无论带不带access_token都可以访问这个接口,并返回结果。显然这不是我想要的。

所以接下来要改造,只有携带了access_token,并且正确后才能访问这个接口。

在网关zuul加入oauth2的包

<!--oauth--><dependency><groupId>org.springframework.security.oauth</groupId><artifactId>spring-security-oauth2</artifactId><version>2.3.5.RELEASE</version></dependency><dependency><groupId>org.springframework.security.oauth.boot</groupId><artifactId>spring-security-oauth2-autoconfigure</artifactId></dependency>

然后添加配置类ResourceServerConfiguration.java,这里配置只要认证通过后才能访问接口

package com.study.vcloud.zuul.config;import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configurers.ExpressionUrlAuthorizationConfigurer;
import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer;
import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter;
import org.springframework.security.oauth2.config.annotation.web.configurers.ResourceServerSecurityConfigurer;/*** @author Pan Weilong* @date 2019/8/15 22:45* @description: 接口.*/
@Configuration
@EnableResourceServer
public class ResourceServerConfiguration extends ResourceServerConfigurerAdapter {@Overridepublic void configure(HttpSecurity http) throws Exception {ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry registry = http.authorizeRequests();//经过oauth服务的连接全部放行,不然token会获取不到registry.antMatchers("/oauth/**").permitAll();//任何连接只要认证后放行registry.anyRequest().authenticated();}@Overridepublic void configure(ResourceServerSecurityConfigurer resources) {//跟oauth中的值必须一样resources.resourceId("vcloud");}}

上面配置了只要认证通过后放行。但是怎么知道access_token的合法性呢??

有两种方法

方法一:从auth服务中获取秘钥,然后在zuul网关拿到加密秘钥验证token的合法性(这种有弊端:就是退出登录后以前的token还可以继续访问接口)

首先我们要知道jwt加密的过程,我这里就不说了,百度上有可以搜一下。

我这里主要是获取oauth中的设置的秘钥,然后网关会自动去验证这个token,我们只需要把oauth中秘钥在网关获取到就ok了

上面就是我们在oauth中设置的秘钥,我们要在网关拿到它,其实很简单,只需要把配置文件配好就ok了

在zuul网关的application.yml加上上面的配置就好了

security:auth:server: http://127.0.0.1:1027 #认证服务地址oauth2:client:client-id: client_id   #oauth中的client_id值client-secret: client_secret #oauth中的client-secret值resource:loadBalanced: truejwt:key-uri: ${security.auth.server}/oauth/token_key #解析jwt令牌所需要密钥的地址

上面信息写的很详细了,上面的获取秘钥是在zuul服务启动的时候就会去获取秘钥,而不是每次获取。

配置好后,网关会去自动校验token合法性以及是否过期。

 

第二种:在网关拿到token后去oauth服务中检验token的正确性(这种方式就不会产生退出登录后以前的token还能用的问题)

security:auth:server: http://127.0.0.1:1027oauth2:client:client-id: client_idclient-secret: client_secretresource:loadBalanced: truetoken-info-uri: ${security.auth.server}/oauth/check_token #auth服务中验证token#jwt:#key-uri: ${security.auth.server}/oauth/token_key #解析jwt令牌所需要密钥的地址

添加了

security.oauth2.resource.token-info-uri: ${security.auth.server}/oauth/check_token #验证auth服务中验证token

每次调用接口都会去oauth服务中校验token的正确性。

一般到这里就配置完成了。

可以拿一个错误的token去访问接口,如果以第二种方式程序报错的话(报什么转换异常的问题以及400 null),

可以看这篇文章。《zuul网关调用oauth/check_token成功,解析失败》

启动项目测试:

我们现在来访问最开始的那个接口127.0.0.1:9999/user/hello

当我们不带access_token去访问

现在已经不能访问

 

当我们在herder中带上access_token

注意注意:access_token最前面一定要加bearer前缀

我这个token已经过期了,所以报错了,我重新获取一个新的token

带上这个token访问

已经访问到了。

不带上就会报错,我把Authorization 前面的钩去掉访问,访问不到

说明此时已经控制到了,除了转发到oauth服务不需要token,其余都要带上token才能访问。

下一篇主要解决报错信息返回统一json格式

项目地址:https://github.com/James-Pan0525/vcloud.git

http://www.lbrq.cn/news/804997.html

相关文章:

  • 那些做测评的网站好/google海外版
  • 网站子域名怎么做/数字化营销怎么做
  • 做网站 怎么做留言/百度指数分析报告
  • 怀化seo推广/优化关键词推广
  • 干事儿网网站开发/seo网站推广公司
  • 网站页面设计需求文档/网络营销策划模板
  • 深圳市宝安区龙华公司是干什么的/合肥seo软件
  • 产品推广方案要包含哪些内容/seo就业指导
  • 查找南宁网站开发公司/北京网站外包
  • 网站开发大作业/郑州网站优化推广
  • 宁波网站建设网站/搜狗搜索引擎优化指南
  • 怎样找到免费的黄页网站/seo软件
  • 网站建设寻求/b2b平台是什么意思啊
  • 网站怎么收录/门户网站
  • 内容类网站如何 流量/整合营销策略
  • 磐安住房和城乡建设部网站/百度新闻网
  • 知名商城网站建设公司/免费b2b平台推广
  • 长春哪家做网站做的好/外链是什么意思
  • 广东省网站建设网站/免费产品推广网站
  • 中国空间站的意义/网址怎么弄
  • 51ape是谁做的网站/今日新闻最新事件
  • 河南网站建设报价/安徽疫情最新情况
  • wordpress 设置字体/aso优化渠道
  • 2008如何添加iis做网站/seo实战视频
  • 网站制作_做网站_耐思智慧/百度seo排名公司
  • 东莞大岭山网站制作/seo网站内容优化
  • 什么是管理/佛山旺道seo
  • 印刷设计营销网站/深圳百度seo培训
  • 做网站用windows还是linux/网络推广公司十大排名
  • 网站怎么做来流量/重庆seo整站优化系统
  • 9.1无法恢复的错误与 panic!
  • 从零到英雄:掌握神经网络的完整指南
  • ubuntu 镜像克隆
  • 登录校验一
  • 代码随想录Day35:动态规划(背包问题 二维 一维、分割等和子集)
  • 【Linux我做主】进程优先级