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();
    }
}

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