单点登录失败解决措施 单点登录框架有哪些( 五 )


@PreAuthorize("hasAuthority('sys:res:create')")@PostMapping("/upload/")public String uploadFile(MultipartFile uploadFile) throws IOException {...}启动服务访问测试第一步:启动服务(sca-auth,sca-resource-gateway,sca-resource)第二步:执行登陆获取access_token令牌第三步:携带令牌访问资源(url中的前缀”sca”是在资源服务器中自己指定的,你的网关怎么配置的,你就怎么写)设置请求头(header),要携带令牌并指定请求的内容类型,例如
设置请求体(body),设置form-data,key要求为file类型,参数名与你服务端controller文件上传方法的参数名相同,值为你选择的文件,例如
上传成功会显示你访问文件需要的路径,假如没有权限会提示你没有访问权限 。
文件上传JS方法设计 function upload(file){//定义一个表单let form=new FormData();//将图片添加到表单中form.append("uploadFile",file);let url="http://localhost:9000/sca/resource/upload/";//异步提交方式1axios.post(url,form,{headers:{"Authorization":"Bearer "+localStorage.getItem("accessToken")}}).then(function (response){let result=response.data;if(result.state==403){alert(result.message);return;}alert("upload ok");})}技术摘要应用实践说明背景分析企业中数据是最重要的资源,对于这些数据而言,有些可以直接匿名访问,有些只能登录以后才能访问,还有一些你登录成功以后,权限不够也不能访问.总之这些规则都是保护系统资源不被破坏的一种手段.几乎每个系统中都需要这样的措施对数据(资源)进行保护.我们通常会通过软件技术对这样业务进行具体的设计和实现.早期没有统一的标准,每个系统都有自己独立的设计实现,但是对于这个业务又是一个共性,后续市场上就基于共性做了具体的落地实现,例如Spring Security,Apache shiro,JWT,Oauth2等技术诞生了.
Spring Security 技术Spring Security 是一个企业级安全框架,由spring官方推出,它对软件系统中的认证,授权,加密等功能进行封装,并在springboot技术推出以后,配置方面做了很大的简化.现在市场上分布式架构中的安全控制,正在逐步的转向Spring Security 。Spring Security 在企业中实现认证和授权业务时,底层构建了大量的过滤器,如图所示:
其中:图中绿色部分为认证过滤器,黄色部分为授权过滤器 。Spring Security就是通过这些过滤器然后调用相关对象一起完成认证和授权操作.
Jwt 数据规范JWT(JSON WEB Token)是一个标准,采用数据自包含方式进行json格式数据设计,实现各方安全的信息传输,其官方网址为:https://jwt.io/ 。官方JWT规范定义,它构成有三部分,分别为Header(头部),Payload(负载),Signature(签名),其格式如下:
xxxxx.yyyyy.zzzzzHeader 部分是一个 JSON 对象,描述 JWT 的元数据,通常是下面的样子 。
{"alg": "HS256","typ": "JWT"}上面代码中,alg属性表示签名的算法(algorithm),默认是 HMAC SHA256(简写HS256);typ属性表示这个令牌(token)的类型(type),JWT 令牌统一写为JWT 。最后,将这个 JSON 对象使用 Base64URL 算法(详见后文)转成字符串 。
Payload部分
Payload 部分也是一个 JSON 对象,用来存放实际需要传递的数据 。JWT规范中规定了7个官方字段,供选用 。
iss (issuer):签发人exp (expiration time):过期时间sub (subject):主题aud (audience):受众nbf (Not Before):生效时间iat (Issued At):签发时间jti (JWT ID):编号除了官方字段,你还可以在这个部分定义私有字段,下面就是一个例子 。{"sub": "1234567890","name": "John Doe","admin": true}注意,JWT 默认是不加密的,任何人都可以读到,所以不要把秘密信息放在这个部分 。
这个 JSON 对象也要使用 Base64URL 算法转成字符串 。
Signature部分
Signature 部分是对前两部分的签名,其目的是防止数据被篡改 。


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: