跳至主要內容

SSO单点登录

chanchaw大约 2 分钟languagejava

Session 跨域

在控制器中使用自定义代码修改多个域名(规则匹配或者白名单)的 cookie 使用同一个 UUID 达到跨域的效果。

session跨域
session跨域

Spring Session 共享

spring-session 技术是 spring 提供的用于处理集群绘画共享的解决方法,spring-session 技术是将用户 session 数据保存到三方存储容器如:mysql , redis 等。一般用于同域名下的多服务器集群 session 共享的问题,不能解决跨域 session 共享问题 ( 即不能解决单点登录的目标 )

Ningx Session 共享

通过 ip_hash 将用户与指定的服务器建立关联,保证用户每次都请求同一个服务器(服务器集群中固定的一台服务器)这样 session 是一直可用的(其他服务器中没有该用户的 session)

Token 机制

传统身份认证

token 身份认证

JSON Web Token ( JWT ) 机制

JWT 数据结构

JWT格式是:header.payload.signature 由3个部分构成,中间由英文点间隔 前后两个部分是必填项,中间的 payload 可以留空

数据结构:{"alg":加密算法名称,"typ":"JWT"} alg - 是加密算法定义内容,如:HMAC SHA256 或 RSA typ - 是token 类型,这里固定为 JWT

payload

在 payload 数据块中一般用于记录实体(通常为用户信息)或其他数据的。主要分为三个部分,分别是:已注册信息( registered claims ),公开数据( public claims ),私有数据( private claims )。payload 中常用信息有:iss(发行者),exp(到期时间),sub (主题),aud (受众)等 前面列举的都是已注册信息,公开数据部分一般都会在 JWT 注册表中增加定义,避免和已注册信息冲突,公开数据和私有数据可以由程序员任意定义。 注意:即使 JWT 有签名加密机制,但是 payload 内容都是明文记录,除非记录的是加密数据,否则不排除泄露隐私数据的可能。不推荐在 payload 中记录任何敏感数据。

signature

JWT 执行流程

基于JWT 机制的单点登录

实现

依赖

sso单点登录依赖
sso单点登录依赖

注意

token 保存位置

webstorage

Restful 接口设计

Rest 简述

Restful 简述

Restful 特性

普通架构

Restful 架构

Restful 操作方式

响应状态码

SpringMVC 使用 Restful 实例

接口安全机制

DES加密

AES 加密