您的位置 首页 > 德语词汇

authorization是什么意思、读音,带你区分清楚Authentication,Authorization以及Cookie、Session

今天给各位分享authorization是什么意思、读音的知识,其中也会对带你区分清楚Authentication,Authorization以及Cookie、Session进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

authorization是什么意思、读音,带你区分清楚Authentication,Authorization以及Cookie、Session

1.认证(Authentication)和授权(Authorization)的区别是什么?

这是一个绝大多数人都会混淆的问题。首先先从读音上来认识这两个名词,很多人都会把它俩的读音搞混,所以我建议你先先去查一查这两个单词到底该怎么读,他们的具体含义是什么。

稍微正式点(啰嗦点)的说法就是:

这两个一般在我们的系统中被结合在一起使用,目的就是为了保护我们系统的安全性。

2.什么是Cookie?Cookie的作用是什么?如何在服务端使用Cookie?

2.1什么是Cookie?Cookie的作用是什么?

Cookie和Session都是用来跟踪浏览器用户身份的会话方式,但是两者的应用场景不太一样。

维基百科是这样定义Cookie的:Cookies是某些网站为了辨别用户身份而储存在用户本地终端上的数据(通常经过加密)。简单来说:Cookie存放在客户端,一般用来保存用户信息

2.2如何能在服务端使用Cookie呢?

这部分内容参考:https://attacomsian.com/blog/cookies-spring-boot,更多如何在SpringBoot中使用Cookie的内容可以查看这篇文章。

1)设置cookie返回给客户端

1@GetMapping("/change-username")\n2publicStringsetCookie(HttpServletResponseresponse){\n3//创建一个cookie\n4Cookiecookie=newCookie("username","Jovan");\n5//设置cookie过期时间\n6cookie.setMaxAge(7*24*60*60);//expiresin7days\n7//添加到response中\n8response.addCookie(cookie);\n9\n10return"Usernameischanged!";\n11}\n

2)使用Spring框架提供的@CookieValue注解获取特定的cookie的值

1@GetMapping("/")\n2publicStringreadCookie(@CookieValue(value="username",defaultValue="Atta")Stringusername){\n3return"Hey!Myusernameis"+username;\n4}\n

3)读取所有的Cookie值

1@GetMapping("/all-cookies")\n2publicStringreadAllCookies(HttpServletRequestrequest){\n3\n4Cookie[]cookies=request.getCookies();\n5if(cookies!=null){\n6returnArrays.stream(cookies)\n7.map(c->c.getName()+"="+c.getValue()).collect(Collectors.joining(","));\n8}\n9\n10return"Nocookies";\n11}\n

3.Cookie和Session有什么区别?如何使用Session进行身份验证?

Session的主要作用就是通过服务端记录用户的状态。典型的场景是购物车,当你要添加商品到购物车的时候,系统不知道是哪个用户操作的,因为HTTP协议是无状态的。服务端给特定的用户创建特定的Session之后就可以标识这个用户并且跟踪这个用户了。

Cookie数据保存在客户端(浏览器端),Session数据保存在服务器端。相对来说Session安全性更高。如果使用Cookie的一些敏感信息不要写入Cookie中,最好能将Cookie信息加密然后使用到的时候再去服务器端解密。

那么,如何使用Session进行身份验证?

很多时候我们都是通过SessionID来实现特定的用户,SessionID一般会选择存放在Redis中。举个例子:用户成功登陆系统,然后返回给客户端具有SessionID的Cookie,当用户向后端发起请求的时候会把SessionID带上,这样后端就知道你的身份状态了。关于这种认证方式更详细的过程如下:

SessionBasedAuthenticationflow

另外,SpringSession提供了一种跨多个应用程序或实例管理用户会话信息的机制。如果想详细了解可以查看下面几篇很不错的文章:

4.什么是Token?什么是JWT?如何基于Token进行身份验证?

我们在上一个问题中探讨了使用Session来鉴别用户的身份,并且给出了几个SpringSession的案例分享。我们知道Session信息需要保存一份在服务器端。这种方式会带来一些麻烦,比如需要我们保证保存Session信息服务器的可用性、不适合移动端(依赖Cookie)等等。

有没有一种不需要自己存放Session信息就能实现身份验证的方式呢?使用Token即可!JWT(JSONWebToken)就是这种方式的实现,通过这种方式服务器端就不需要保存Session数据了,只用在客户端保存服务端返回给客户的Token就可以了,扩展性得到提升。

JWT本质上就一段签名的JSON格式的数据。由于它是带有签名的,因此接收者便可以验证它的真实性。

下面是RFC7519对JWT做的较为正式的定义。

JSONWebToken(JWT)isacompact,URL-safemeansofrepresentingclaimstobetransferredbetweentwoparties.TheclaimsinaJWTareencodedasaJSONobjectthatisusedasthepayloadofaJSONWebSignature(JWS)structureorastheplaintextofaJSONWebEncryption(JWE)structure,enablingtheclaimstobedigitallysignedorintegrityprotectedwithaMessageAuthenticationCode(MAC)and/orencrypted.——JSONWebToken(JWT)

在基于Token进行身份验证的的应用程序中,服务器通过Payload、Header和一个密钥(secret)创建令牌(Token)并将Token发送给客户端,客户端将Token保存在Cookie或者localStorage里面,以后客户端发出的所有请求都会携带这个令牌。你可以把它放在Cookie里面自动发送,但是这样不能跨域,所以更好的做法是放在HTTPHeader的Authorization字段中:Authorization:BearerToken。

5什么是OAuth2.0?

OAuth是一个行业的标准授权协议,主要用来授权第三方应用获取有限的权限。而OAuth2.0是对OAuth1.0的完全重新设计,OAuth2.0更快,更容易实现,OAuth1.0已经被废弃。详情请见:rfc6749。

实际上它就是一种授权机制,它的最终目的是为第三方应用颁发一个有时效性的令牌token,使得第三方应用能够通过该令牌获取相关的资源。

OAuth2.0比较常用的场景就是第三方登录,当你的网站接入了第三方登录的时候一般就是使用的OAuth2.0协议。

关于authorization是什么意思、读音的内容到此结束,希望对大家有所帮助。

本站涵盖的内容、图片、视频等数据,部分未能与原作者取得联系。若涉及版权问题,请及时通知我们并提供相关证明材料,我们将及时予以删除!谢谢大家的理解与支持!

Copyright © 2023