Kisso 使用笔记(个人总结,一直在更新)
Kisso的使用说明(个人总结,一直在更新)
签名的问题;
如何你使用的JDK11或是更高的版本,则在在生成RSA时会提示:
PKCS12 密钥库不支持其他存储和密钥口令。正在忽略用户指定的-keypass值
*如果是这样,那么请你在JDK1.8/sdk/bin/下面生成,最多则会提示Warning: JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore key.jks -destkeystore key.jks -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。
不然你就像网友学习,先生成PKCS12
再转成RSA
配置
打开Kisso的配置类,发现里面有默认的
keypsss
等配置信息,如果你要自已生成,就在application.yml
文件中做相应的覆盖
点击查看代码
/
@Data
@Accessors(chain = true)
public class SSOConfig {
/**
* 编码格式,默认 UTF-8
*/
private String encoding = SSOConstants.ENCODING;
/**
* 签名密钥(用于对此算法)
*/
private String signKey;
/**
* 签名算法
*
* @see io.jsonwebtoken.SignatureAlgorithm
*/
private String signAlgorithm = "HS512";
/**
* RSA 私钥 key.jks 存储路径
*/
private String rsaJksStore = "key.jks";
/**
* RSA 公钥 public.cert 存储路径
*/
private String rsaCertStore = "public.cert";
/**
* RSA 密钥 Alias
*/
private String rsaAlias = "jwtkey";
/**
* RSA 密钥 keypass
*/
private String rsaKeypass = "llTs1p68K";
/**
* RSA 密钥 storepass
*/
private String rsaStorepass = "lLt66Y8L321";
/**
* 访问票据名
*/
private String accessTokenName = "accessToken";
/**
* cookie 名称
*/
private String cookieName = "uid";
/**
* cookie 所在有效域名,不设置为当前访问域名
*/
private String cookieDomain;
/**
* cookie 路径
*/
private String cookiePath = "/";
/**
* cookie 是否设置安全,设置 true 那么只能为 https 协议访问
*/
private boolean cookieSecure = false;
/**
* cookie 是否为只读状态,设置 js 无法获取
*/
private boolean cookieHttpOnly = true;
/**
* cookie 有效期 -1 关闭浏览器失效
*/
private int cookieMaxAge = -1;
/**
* cookie的SameSite属性用来限制第三方Cookie,从而减少安全风险(防止CSRF) 支持三种模式:
*
* Strict 仅允许一方请求携带Cookie,即浏览器将只发送相同站点请求的Cookie,即当前网页URL与请求目标URL完全一致,浏览器默认该模式。
*
* Lax 允许部分第三方请求携带Cookie
*
* None 无论是否跨站都会发送Cookie
*/
private String cookieSameSite;
/**
* 是否验证 cookie 设置时浏览器信息
*/
private boolean cookieBrowser = false;
/**
* 是否验证 cookie 设置时 IP 信息
*/
private boolean cookieCheckIp = false;
/**
* 登录地址
*/
private String loginUrl = "";
/**
* 退出地址
*/
private String logoutUrl = "";
/**
* 登录成功回调地址
*/
private String paramReturnUrl = "ReturnURL";
/**
* 缓存有效期设置
*/
private int cacheExpires = CookieHelper.CLEAR_BROWSER_IS_CLOSED;
/**
* 访问票据
*/
private SSOToken ssoToken;
/**
* 权限认证(默认 false)
*/
private boolean permissionUri = false;
/**
* 插件列表
*/
private List pluginList;
/**
* SSO 缓存
*/
private SSOCache cache;
/**
* SSO 权限授权
*/
private SSOAuthorization authorization;
public SSOConfig() {
/* 支持 setInstance 设置初始化 */
}
/**
* new 当前对象
*/
public static SSOConfig getInstance() {
return SSOHelper.getSsoConfig();
}
public static String getSSOEncoding() {
return getInstance().getEncoding();
}
public String getRsaCertStore() {
if (null == rsaCertStore) {
throw new KissoException("public.cert not found");
}
return rsaCertStore;
}
/**
* 签名密钥
*/
public String getSignKey() {
if (null == signKey) {
return "Janfv5UgKhoDrH73EZT7m+81pgqLN3EjWKXZtqF9lQHH9WruxqX0+FkQys6XK0QXzSUckseOAZGeQyvfreA3tw==";
}
return signKey;
}
public String getRsaJksStore() {
if (null == rsaJksStore) {
throw new KissoException("jwt.jks not found");
}
return rsaJksStore;
}
public SSOAuthorization getAuthorization() {
return authorization;
}
public SSOConfig setAuthorization(SSOAuthorization authorization) {
this.authorization = authorization;
return this;
}
public String getCookieSameSite() {
if (null != cookieSameSite && ("Strict".equalsIgnoreCase(cookieSameSite)
|| "Lax".equalsIgnoreCase(cookieSameSite)
|| "None".equalsIgnoreCase(cookieSameSite))) {
return cookieSameSite;
}
return null;
}
/**
*
* 生成 Token 缓存主键
*
*
* @param userId 用户ID
* @return
*/
public static String toCacheKey(Object userId) {
StringBuffer ck = new StringBuffer();
ck.append("ssoTokenKey_");
ck.append(userId);
return ck.toString();
}
}