• 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();
        }
    }
    
    
  • 相关阅读:
    Thinkphp6笔记十八:默认分页2
    Thinkphp6笔记十八:默认分页1
    Thinkphp6笔记十七:模板标签使用
    Thinkphp6笔记十六:IP黑名单
    Thinkphp6笔记十五:模板路径自定义配置
    Thinkphp6笔记十四:Redis配置
    Thinkphp6笔记十三:验证器(模型验证)
    Thinkphp6笔记十三:验证器(场景验证)
    Thinkphp6笔记十三:验证器(控制器验证)
    Thinkphp6笔记十二:多数据库配置
  • 原文地址:https://www.cnblogs.com/flay/p/15813759.html
Copyright © 2020-2023  润新知