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) 支持三种模式:
     * <p>
     * Strict 仅允许一方请求携带Cookie,即浏览器将只发送相同站点请求的Cookie,即当前网页URL与请求目标URL完全一致,浏览器默认该模式。
     * <p>
     * Lax 允许部分第三方请求携带Cookie
     * <p>
     * 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<SSOPlugin> 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;
    }

    /**
     * <p>
     * 生成 Token 缓存主键
     * </p>
     *
     * @param userId 用户ID
     * @return
     */
    public static String toCacheKey(Object userId) {
        StringBuffer ck = new StringBuffer();
        ck.append("ssoTokenKey_");
        ck.append(userId);
        return ck.toString();
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章