public class SSOHelper extends Object
SSO 帮助类
| 限定符和类型 | 字段和说明 |
|---|---|
protected static ConfigurableAbstractKissoService |
kissService |
protected static Logger |
logger |
| 构造器和说明 |
|---|
SSOHelper() |
| 限定符和类型 | 方法和说明 |
|---|---|
static AuthToken |
askCiphertext(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response,
String privateKey)
生成跨域询问票据
|
static <T extends Token> |
attrToken(javax.servlet.http.HttpServletRequest request)
从请求中获取 token 通过登录拦截器之后使用
该数据为登录拦截器放入 request 中,防止二次解密
|
static boolean |
clearLogin(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
清理当前登录状态
清理 Cookie、缓存、统计、等数据
|
static void |
clearRedirectLogin(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
退出重定向登录页,跳至 sso.properties 配置的属性 sso.login.url 地址
|
static String |
getLoginCount(javax.servlet.http.HttpServletRequest request)
当前登录人总数(合计多少个)
|
static String |
getSecretKey()
生成 18 位随机字符串密钥
替换配置文件 sso.properties 属性 sso.secretkey=随机18位字符串
|
static Token |
getToken(javax.servlet.http.HttpServletRequest request)
获取当前请求 token
该方法直接从 cookie 中解密获取 token, 常使用在登录系统及拦截器中使用 getToken(request)
如果该请求在登录拦截器之后请使用 attrToken(request) 防止二次解密
|
static String |
getTokenCacheKey(javax.servlet.http.HttpServletRequest request)
获取 token 的缓存主键
|
static void |
logout(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
退出登录, 并且跳至 sso.properties 配置的属性 sso.logout.url 地址
|
static AuthToken |
ok(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response,
String replyData,
String atPk,
String ssoPrk)
验证回复密文,成功!
|
static AuthToken |
replyCiphertext(javax.servlet.http.HttpServletRequest request,
String askData)
生成跨域回复票据
|
static void |
setSSOCookie(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response,
Token token,
boolean invalidate)
设置加密 Cookie(登录验证成功)
最后一个参数 true 销毁当前JSESSIONID.
|
protected static final Logger logger
protected static ConfigurableAbstractKissoService kissService
public static String getSecretKey()
替换配置文件 sso.properties 属性 sso.secretkey=随机18位字符串
public static String getLoginCount(javax.servlet.http.HttpServletRequest request)
request - public static void setSSOCookie(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response,
Token token,
boolean invalidate)
最后一个参数 true 销毁当前JSESSIONID. 创建可信的 JSESSIONID 防止伪造 SESSIONID 攻击
最后一个参数 false 只设置 cookie
request.setAttribute(SSOConfig.SSO_COOKIE_MAXAGE, -1); 可以设置 Cookie 超时时间 ,默认读取配置文件数据 。 -1 浏览器关闭时自动删除 0 立即删除 120 表示Cookie有效期2分钟(以秒为单位)
request - response - token - SSO 票据invalidate - 销毁当前 JSESSIONIDpublic static Token getToken(javax.servlet.http.HttpServletRequest request)
该方法直接从 cookie 中解密获取 token, 常使用在登录系统及拦截器中使用 getToken(request)
如果该请求在登录拦截器之后请使用 attrToken(request) 防止二次解密
request - public static <T extends Token> T attrToken(javax.servlet.http.HttpServletRequest request)
该数据为登录拦截器放入 request 中,防止二次解密
request - 访问请求public static void logout(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
throws IOException
request - response - IOExceptionpublic static boolean clearLogin(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
清理 Cookie、缓存、统计、等数据
request - response - public static void clearRedirectLogin(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
throws IOException
request - response - IOExceptionpublic static String getTokenCacheKey(javax.servlet.http.HttpServletRequest request)
request - 当前请求public static AuthToken askCiphertext(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, String privateKey)
生成跨域询问票据
request - response - privateKey - RSA 私钥(业务系统私钥,用于签名)AuthTokenpublic static AuthToken replyCiphertext(javax.servlet.http.HttpServletRequest request, String askData)
生成跨域回复票据
authToken - 跨域信任 TokenuserId - 用户IDaskTxt - 询问密文AuthTokenpublic static AuthToken ok(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, String replyData, String atPk, String ssoPrk)
验证回复密文,成功! 返回 绑定用户ID 等信息
request - response - authToken - 跨域信任 TokenreplyTxt - 回复密文atPk - RSA 公钥 (业务系统公钥,验证authToken签名)ssoPrk - RSA 公钥 (SSO 回复密文公钥验证签名)AuthTokenCopyright © 2016. All rights reserved.