springboot集成cas單點登錄出現的問題記錄

公司項目集成了第三方的單點登錄  實際上使用的還是cas  只不過他們做了進一步的封裝  集成中總共發現如下問題

1.springboot加載第三方過濾器問題

傳統方式時放在web.xml中  由於springboot並沒有web.xml  所以採用代碼方式進行加載

@Configuration
public class UcfilterConfig {
    @Bean
    public FilterRegistrationBean ssoFilter() throws IOException {
        //創建 過濾器註冊bean
        FilterRegistrationBean registrationBean = new FilterRegistrationBean();
        FilterChainProxy filterChainProxy = new FilterChainProxy();
        registrationBean.setFilter(filterChainProxy);

        List urls = new ArrayList();
        urls.add("/*");   //給所有請求加過濾器
        //設置 有效url
        registrationBean.setUrlPatterns(urls);

        Map<String, String> initParameters=new HashMap<>();
        initParameters.put("uc-config",this.getClass().getClassLoader().getResource("uc-client.properties").getPath());
        initParameters.put("timeOut","30");
        registrationBean.setInitParameters(initParameters);

        return registrationBean;
    }

}

 

 

2.讀取文件問題

Springboot打成jar後運行  使用如下方式會拋異常  讀取不到配置文件

this.getClass().getClassLoader().getResource("uc-client.properties").getPath()

 

所以換了種寫法  在linux主機生成臨時文件讀取

// 臨時目錄
String tempPath =System.getProperty("java.io.tmpdir") +"/"+ System.currentTimeMillis()+"uc-client.properties";
File f = new File(tempPath);
logger.info("uc-client.properties臨時存儲路徑" + tempPath);
IOUtils.copy(resource.getInputStream(),new FileOutputStream(f));

f.getAbsolutePath()即可獲取到

@Configuration
public class UcfilterConfig {

    private Logger logger = LogManager.getLogger(UcfilterConfig.class);

    @Bean
    public FilterRegistrationBean ssoFilter() throws IOException {
        //創建 過濾器註冊bean
        FilterRegistrationBean registrationBean = new FilterRegistrationBean();
        FilterChainProxy filterChainProxy = new FilterChainProxy();
        registrationBean.setFilter(filterChainProxy);

        List urls = new ArrayList();
        urls.add("/*");   //給所有請求加過濾器
        //設置 有效url
        registrationBean.setUrlPatterns(urls);

        ClassPathResource resource = new ClassPathResource("uc-client.properties");
        // 臨時目錄
        String tempPath =System.getProperty("java.io.tmpdir") +"/"+ System.currentTimeMillis()+"uc-client.properties";
        File f = new File(tempPath);
        logger.info("uc-client.properties臨時存儲路徑" + tempPath);
        IOUtils.copy(resource.getInputStream(),new FileOutputStream(f));

        Map<String, String> initParameters=new HashMap<>();
        initParameters.put("uc-config",f.getAbsolutePath());
        initParameters.put("timeOut","30");
        registrationBean.setInitParameters(initParameters);

        return registrationBean;
    }

}

 

2 toekn問題

採用

window.location.href="http://61.190.70.197:8800/uccp-server/login?service=http://127.0.0.1:24001/talent/index.html時  雖然登錄後可以回跳成功  但是無法獲取到token信息  後使用接口重定向方法解決  猜測是走後臺接口重定向  會攜帶ticket參數被攔截器獲取到  而前臺地址攜帶ticket  後臺並未獲取 進行驗證操作

window.location.href="http://61.190.70.197:8800/uccp-server/login?service=http://127.0.0.1:8001/rest/redirectIndex

 

 

3測試環境集成問題

本地集成測試完畢  在測試環境會出現登錄回跳  連接超時問題 經與第三方人員溝通 初步確認 配置文件中的接口地址爲他們的外網地址  而測試環境不通外網  造成重定向後臺接口 被攔截器截取驗證ticket連接驗證接口失敗 導致連接超時  待進一步驗證

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