微服务安全(OAuth2 + JWT)

微服务安全(OAuth2 + JWT)



第一章:安全设计的必要性——像游乐园的安检门

想象你运营一家主题乐园:

  • **游客(用户)**需要门票(凭证)才能进入
  • **不同区域(服务)**需要不同权限(VIP区需额外手环)
  • **黄牛(攻击者)**可能伪造门票混入

OAuth2 + JWT 就是游乐园的“智能安检系统”,它解决了三个核心问题:

  1. 如何安全分发门票(认证)
  2. 如何验证门票真伪(鉴权)
  3. 如何限制黄牛倒卖(令牌时效性)

第二章:OAuth2 的四张“门票”

OAuth2 定义了四种授权方式,就像游乐园的不同购票渠道:

1. 密码模式(直接买票)

适用场景:自家APP登录

// 密码模式获取令牌  
POST /oauth/token  
grant_type=password&username=user&password=123&client_id=app  

2. 授权码模式(第三方代购)

适用场景:微信登录、Google登录
流程:

  1. 跳转到第三方登录页
  2. 用户授权后返回授权码
  3. 用授权码兑换令牌

3. 客户端模式(员工通道)

适用场景:服务间内部通信

POST /oauth/token  
grant_type=client_credentials&client_id=service&client_secret=abc  

4. 简化模式(快速通道)

适用场景:纯前端应用(无服务端)


第三章:JWT——防伪会员卡

JWT(JSON Web Token)就像一张加密的会员卡,包含:

  1. 卡面信息(Payload):用户ID、权限、有效期
  2. 防伪标识(签名):用密钥生成,无法伪造

代码示例:生成JWT

public String createJwt(User user) {
     
    // 当前时间与过期时间  
    Date now = new Date();  
    Date expire = new Date(now.getTime() + 3600 * 1000);  

    // 构建JWT(像打印会员卡)  
    return Jwts.builder()  
        .setHeaderParam("typ", "JWT")  
        .setSubject(user.getId().toString())  
        .claim("role", user.getRole())  // 自定义信息  
        .setIssuedAt(now)  
        .
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

双囍菜菜

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值