1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        sso-coreSSO 單點登錄框架架構(gòu)

        聯(lián)合創(chuàng)作 · 2023-09-23 14:32

         sso-core ,是碼家學(xué)院自研 SSO 單點登錄框架架構(gòu),利用輕量級 JWT 作為 Token 生成方式,JSON 攜帶用戶信息,用戶可以自定義 JWT 加密鹽,在前后端分離上有著非常實用的功效,注解控制認證管理。

        直接引入 core 核心包使用(最新版本1.2.2)

        <dependency>
              <groupId>com.majiaxueyuan</groupId>
              <artifactId>sso-core</artifactId>
              <version>${version}</version>
        </dependency>

        完成 SSO 單點登錄只需要兩步:

        第一步:搭建統(tǒng)一認證中心(只需要做個登錄,登錄成功授權(quán) token )

        當(dāng)用戶在數(shù)據(jù)庫認證成功過后,只需要調(diào)用下面代碼,去生成Token就行

        生成Token時需要傳遞四個參數(shù),用戶唯一ID,用戶名,其他信息(建議JSON,每次請求原樣攜帶),加密鹽

        生成成功過后,返回Result,判斷code=200時,data就是Token

        Result loginSuccess = TokenLoginHelper.loginSuccess(id, username, otherJsonInfo, "pwd_salt");
        String token = loginSuccess.getData().toString();

         

        第二步:集成項目完成 SSO 認證(添加過濾器)

        在分布式服務(wù)中我們只需要添加一個攔截器就行,添加時需要設(shè)置加密鹽與認證服務(wù)器一致。

        如果有多個服務(wù)米個服務(wù)都需要添加一個攔截,就實現(xiàn)了SSO單點登錄的機制。

        認證時在請求頭中Authorization中攜帶token信息用于驗證。

        @Configuration
        public class MaJiaSsoConfig extends WebMvcConfigurerAdapter {

            @Override
            public void addInterceptors(InterceptorRegistry registry) {
                registry.addInterceptor(ssoIntercepter()).addPathPatterns("/**");
            }

            @Bean
            public MaJiaSSOIntercepter ssoIntercepter() {
                return new MaJiaSSOIntercepter().setTokenSalt("pwd_salt");
            }
        }

        我們提供了基于注解形式的認證控制,當(dāng)有Mapping不需要認證時,加上注解@NoToken就行

        @RequestMapping("/hi")
            @NoToken(notNeedToken = true)
            public String wei() {
                return "hi,no token!";
            }

        我們會攜帶上用戶傳過來的所有信息(除去加密鹽),用戶在請求中可以用如下代碼獲取信息

        SSOUser user = (SSOUser) request.getAttribute("ssoUser");

        SSOUser是核心包提供的用戶信息??梢缘玫匠_加密鹽之外用戶傳過來的所有信息。

        非常簡單,非常實用!

        瀏覽 34
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        編輯 分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        編輯 分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            伊人色**天天综合婷婷 | 欧洲AV无码 | 深夜激情五月 | 久久久久久久久久久久久久久女乱 | 豆花视频AⅤ一区二区三区 | 亚洲午夜久久久久久久久久久 | 欧美黄色网址在线观看 | 国产老女人操逼视频 | 天天狠狠操| 欧美女操逼 |