oauth2---密码模式和授权码模式架构分析

10 篇文章 0 订阅
4 篇文章 0 订阅

现在只分析常见的两种模式,密码和授权码模式

密码模式

SSO客户端作用是:要提供登陆页面login.html ,且登陆接口,在登录接口中调用authServer中auth/token接口,并且携带username,userpassword,client_id,client_secret

gateway网关作用是:对浏览器请求进行过滤,如果没有携带token,则一律请求SSO客户端的登陆页面,如果有携带token,则请求authServer中check/token接口,如果check token通过,再校验token的资源权限,如用户A拥有资源urlA(user-->role-->permission(urlA) ),如果用户用这个token去请求urlB,则应提示访问权限不足

资源服务器作用:主要是定义业务服务(如订单服务,商品服务....)

authServer:生成token,管理token,维护第三方客户端的APP信息

授权码模式

 

SSO客户端作用是:要定义两个服务

1、携带client_id和login_callback_url去认证中心获取授权码code

2、携带client_id和client_secret,用户名,密码和resource_callback_url去认证中心获取token

gateway网关作用是:对浏览器请求进行过滤,如果没有携带token,则一律请求SSO客户端的登陆页面,如果有携带token,则请求authServer中check/token接口,如果check token通过,再校验token的资源权限,如用户A拥有资源urlA(user-->role-->permission(urlA) ),如果用户用这个token去请求urlB,则应提示访问权限不足

资源服务器作用:主要是定义业务服务(如订单服务,商品服务....)

authServer:提供登陆页面login.html,生成token,管理token,维护第三方客户端的APP信息

注意点

1、授权码模式 核心就是不让用户的用户名和密码被第三发系统获取,所以登陆页面放在认证中心

2、授权码code只能使用一次

3、在认证中心生成的token是短活的,refresh_token可以设置很长时间,可以是50年都可以,但是token一般设置的时间短,这样做的目的就是防止token被窃取了,当gateway检测出token失效了,则应该用refresh_token去认证中心获取新的token

4、无论是密码模式还是授权码模式都要client_id,client_secret验证

5、上述中gateway做了统一授权,认证的作用,资源服务器没有添加认证授权拦截,可以让资源代码职责单一,减少冗余代码,如果要对资源服务器对安全验证,则在内网中可以设置IP白名单访问

6、如果token是JWT形式的,则无需每次请求都去check token了,提高性能

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 前后端分离是一种将前端界面与后端逻辑进行分离开发的架构方式,使得前端与后端可以并行开发。OAuth 2.0是一种授权框架,用于授权和认证流程的规范化,而Spring Security是一个在Java中实现安全控制的框架,提供了大量的安全特性。Spring Authorization Server是Spring Security中用于实现授权服务器的模块,它支持OAuth 2.0的各种授权模式密码模式OAuth 2.0中的一种授权模式,它允许用户通过提交用户名和密码来获取访问令牌,然后使用该令牌来访问受保护的资源。在前后端分离的架构中,可以使用Spring Security配合Spring Authorization Server来实现密码模式的认证和授权。 在密码模式下,前端首先需要收集用户的用户名和密码,并将其发送给后端。后端使用Spring Security提供的密码器对密码进行加密,并验证用户名和密码的正确性。如果验证通过,则后端向客户端颁发一个访问令牌,通常是一个JWT(JSON Web Token)。前端使用获得的访问令牌来访问需要受保护的资源,每次请求将该令牌作为Authorization头的Bearer字段发送给后端进行验证。后端可以使用Spring Security的资源服务器来验证该令牌的有效性,并根据用户的权限控制对资源的访问。 使用Spring Security和Spring Authorization Server的密码模式可以实现安全的前后端分离架构。通过合理配置和使用安全特性,可以保障用户的身份认证和资源的授权,确保系统的安全性。 ### 回答2: 前后端分离是一种软件架构模式,前端和后端通过使用API进行通信,分别负责处理用户界面和数据逻辑。OAuth 2.0是一种用于授权的开放标准协议,它允许用户在第三方应用程序中授权访问其受保护的资源。Spring Security是Spring框架中的一个模块,提供了身份验证和授权功能。 在前后端分离的架构中,前端应用程序通常需要使用OAuth 2.0协议进行用户授权,以访问后端应用程序的受保护资源。为了实现密码模式,我们可以使用Spring Security的模块之一,即spring-authorization-server。 spring-authorization-server是Spring Security的一个子模块,用于实现OAuth 2.0协议中的授权服务器。密码模式OAuth 2.0协议中的一种授权模式,允许前端应用程序通过用户的用户名和密码进行授权密码模式在安全性上有一定的风险,因此在实际应用中需要谨慎使用。 使用spring-authorization-server的密码模式,我们可以在前端应用程序中收集用户的用户名和密码,并将其提交给后端应用程序进行验证。后端应用程序将使用Spring Security进行身份验证,并向前端应用程序颁发一个访问令牌,该令牌可以用于后续的API请求。 通过使用前后端分离、OAuth 2.0和spring-authorization-server的密码模式,我们可以实现安全的用户授权和身份验证机制,确保只有经过授权的用户才能访问受保护的资源。这种架构模式能够提高系统的安全性和可扩展性,适用于各种类型的应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值