www.tjgcgs88.cn-狠狠久久亚洲欧美专区不卡,久久精品国产99久久无毒不卡,噼里啪啦国语版在线观看,zσzσzσ女人极品另类

  • <strike id="qgi8o"><td id="qgi8o"></td></strike>
  • <ul id="qgi8o"><acronym id="qgi8o"></acronym></ul>
  • <li id="qgi8o"></li>
    <ul id="qgi8o"></ul>
    <strike id="qgi8o"><rt id="qgi8o"></rt></strike>
    <ul id="qgi8o"><center id="qgi8o"></center></ul>
  • <kbd id="qgi8o"></kbd>

    手擼SSO單點登錄(四)登錄驗證-首次登錄

    一、目標

    前一章節(jié)講解了各應用未登錄的系統(tǒng)統(tǒng)一跳轉(zhuǎn)至SSO統(tǒng)一登錄頁面。當輸入用戶名、密碼后點擊登錄流程是怎么實現(xiàn)的。這一章節(jié)的目標主要是講解OA(這里代表client.sso.com:8082)經(jīng)過統(tǒng)一登錄后怎么回跳至OA頁面。

    二 、系統(tǒng)UML工程類圖

    三、代碼實現(xiàn)a. com.yuantai.controller.LoginController@RequestMapping(method?=?RequestMethod.POST)????public?String?login(????????????@RequestParam(value?=?SsoConstant.REDIRECT_URI,?required?=?true)?String?redirectUri,????????????@RequestParam(value?=?Oauth2Constant.APP_ID,?required?=?true)?String?appId,????????????@RequestParam?String?username,????????????@RequestParam?String?password,????????????HttpServletRequest?request,?HttpServletResponse?response)?throws?UnsupportedEncodingException?{????????if(!appService.exists(appId))?{????????????request.setAttribute("errorMessage",?"非法應用");????????????return?goLoginPath(redirectUri,?appId,?request);????????}????????Result<SsoUser>?result?=?userService.login(username,?password);????????if?(!result.isSuccess())?{????????????request.setAttribute("errorMessage",?result.getMessage());????????????return?goLoginPath(redirectUri,?appId,?request);????????}????????String?tgt?=?sessionManager.setUser(result.getData(),?request,?response);????????return?generateCodeAndRedirect(redirectUri,?tgt);????}

    1、 輸入(用戶名、密碼)點擊登錄,首次調(diào)用的是/login方法(SmartSsoConfig配置了無需攔截此url) 2、調(diào)用com.yuantai.session.TicketGrantingTicketManager的 sessionManager.setUser()

    public?String?setUser(SsoUser?user,?HttpServletRequest?request,?HttpServletResponse?response)?{????????String?tgt?=?getCookieTgt(request);????????if?(StringUtils.isEmpty(tgt))?{????????????//?cookie中沒有?生成一個tgt????????????tgt?=?ticketGrantingTicketManager.generate(user);????????????//?TGT存cookie,和Cas登錄保存cookie中名稱一致為:TGC????????????CookieUtils.addCookie(AppConstant.TGC,?tgt,?"/",?request,?response);????????}????????else?if(ticketGrantingTicketManager.getAndRefresh(tgt)?==?null){????????????ticketGrantingTicketManager.create(tgt,?user);????????}????????else?{????????????ticketGrantingTicketManager.set(tgt,?user);????????}????????return?tgt;????}

    當進入if(StringUtils.isEmpty(tgt))判斷時getCookieTgt(request)獲取的tgt為空(/login登錄只傳了用戶名與密碼并無其他信息)所以此判斷為true進去方法體代碼中、此方法體作用如下:

    生成一個管理端的登錄憑證TGT

    把憑證與用戶信息存儲內(nèi)存Map(TGT,用戶信息)

    把憑證等信息放入Cookie中

    3、調(diào)用com.yuantai.controller.BaseLoginController的generateCodeAndRedirect(redirectUri, tgt)方法

    String?generateCodeAndRedirect(String?redirectUri,?String?tgt)?throws?UnsupportedEncodingException?{????????//?生成授權(quán)碼????????String?code?=?codeManager.generate(tgt,?true,?redirectUri);????????return?"redirect:"?+?authRedirectUri(redirectUri,?code);????}

    生成臨時授權(quán)碼code,并把code與codeContent內(nèi)容存入map(code,content內(nèi)存)

    后臺發(fā)起重定向請求redirect:http://client.sso.com:8082/?code=code-2f243fd967e840288ddb089611cb31c8記住這里是后端的重定向請求(前端無url變動)與response.sendRedirect(loginUrl)(前端會看到url變動)

    4、跳轉(zhuǎn)到OA系統(tǒng)進入com.yuantai.filter.LoginFilter請求攔截、進入isAccessAllowed方法的if (code != null)方法體

    @Override????public?boolean?isAccessAllowed(HttpServletRequest?request,?HttpServletResponse?response)?throws?IOException?{????????SessionAccessToken?sessionAccessToken?=?SessionUtils.getAccessToken(request);????????//?本地Session中已存在,且accessToken沒過期或者refreshToken成功,直接返回????????if?(sessionAccessToken?!=?null?&&?(!sessionAccessToken.isExpired()????????????????||?refreshToken(sessionAccessToken.getRefreshToken(),?request)))?{????????????return?true;????????}????????String?code?=?request.getParameter(Oauth2Constant.AUTH_CODE);????????if?(code?!=?null)?{????????????//?獲取accessToken????????????getAccessToken(code,?request);????????????//?為去掉URL中授權(quán)碼參數(shù),再跳轉(zhuǎn)一次當前地址????????????redirectLocalRemoveCode(request,?response);????????}????????else?{????????????redirectLogin(request,?response);????????}????????return?false;????}

    第一個if (sessionAccessToken != null && (!sessionAccessToken.isExpired() || refreshToken(sessionAccessToken.getRefreshToken(), request)))因為第一次登錄跳轉(zhuǎn)sessionAccessToken為null

    5、 所以進入if (code != null)方法體

    if?(code?!=?null)?{?//?獲取accessToken????getAccessToken(code,?request);????//?為去掉URL中授權(quán)碼參數(shù),再跳轉(zhuǎn)一次當前地址????redirectLocalRemoveCode(request,?response);}

    1.進去 getAccessToken(code, request);方法

    private?void?getAccessToken(String?code,?HttpServletRequest?request)?{????????Result<RpcAccessToken>?result?=?Oauth2Utils.getAccessToken(getServerUrl(),?getAppId(),????????????????getAppSecret(),?code);????????if?(!result.isSuccess())?{????????????logger.error("getAccessToken?has?error,?message:{}",?result.getMessage());????????????return;????????}????????setAccessTokenInSession(result.getData(),?request);????}

    1.帶著臨時授權(quán)碼code調(diào)用http://authentication.sso.com:8080/oauth2/access_token去認證中心獲取用戶信息、并且消費code后刪除code信息(臨時授權(quán)碼只能生效一次) 2. 調(diào)用 setAccessTokenInSession(result.getData(), request);把登錄信息存儲到session中,記錄session與token的映射關系

    private?boolean?setAccessTokenInSession(RpcAccessToken?rpcAccessToken,?HttpServletRequest?request)?{????????if?(rpcAccessToken?==?null)?{????????????return?false;????????}????????//?記錄accessToken到本地session????????SessionUtils.setAccessToken(request,?rpcAccessToken);????????//?記錄本地session和accessToken映射????????recordSession(request,?rpcAccessToken.getAccessToken());????????return?true;????}

    6、最后調(diào)用 redirectLocalRemoveCode(request, response);去掉授權(quán)碼信息帶著登錄成功信息再次請求http://client.sso.com:8082/

    /**?????*?去除返回地址中的票據(jù)參數(shù)?????*?@param?request?????*?@return?????*?@throws?IOException?????*/????private?void?redirectLocalRemoveCode(HttpServletRequest?request,?HttpServletResponse?response)?throws?IOException?{????????String?currentUrl?=?getCurrentUrl(request);????????currentUrl?=?currentUrl.substring(0,?currentUrl.indexOf(Oauth2Constant.AUTH_CODE)?-?1);????????response.sendRedirect(currentUrl);????}

    總結(jié)

    單點登錄,資源都在各個業(yè)務系統(tǒng)這邊,不在SSO那一方。 用戶在給SSO服務器提供了用戶名密碼后,作為業(yè)務系統(tǒng)并不知道這件事。 SSO隨便給業(yè)務系統(tǒng)一個ST,那么業(yè)務系統(tǒng)是不能確定這個ST是用戶偽造的,還是真的有效,所以要拿著這個ST去SSO服務器再問一下,這個用戶給我的ST是否有效,是有效的我才能讓這個用戶訪問 配套視頻地址https://www.bilibili.com/video/BV1SR4y1P7XJ/



    系統(tǒng)的講解 - SSO單點登錄
    SSO單點登錄詳解SSO(Single Sign On)是一種技術(shù),讓用戶在多個相互信任的應用系統(tǒng)間只需登錄一次即可無縫切換,如阿里巴巴集團的淘寶、天貓、聚劃算和飛豬等網(wǎng)站。這種登錄方式為用戶帶來了便利,無需記憶多個賬號和密碼,同時也簡化了系統(tǒng)管理員和新系統(tǒng)開發(fā)的工作流程。對于用戶而言,SSO意味著一次登錄,...

    單點登錄是什么
    單點登錄(Single Sign-On,SSO)是一種高效的企業(yè)業(yè)務整合解決方案,它簡化了用戶在多系統(tǒng)環(huán)境中的身份驗證流程。其核心原理是用戶在首次登錄某一系統(tǒng)后,無需再次輸入憑據(jù),即可自動獲得其他關聯(lián)系統(tǒng)的信任,實現(xiàn)一次登錄,處處通行的效果。在大型互聯(lián)網(wǎng)平臺,如阿里巴巴,單點登錄的重要性不言而喻。由于...

    sso單點登錄是什么?
    單點登錄,即SSO,是一種允許用戶通過一次驗證即可訪問多個系統(tǒng)或應用的技術(shù)。這項技術(shù)通過集中管理身份驗證,確保用戶在不同平臺間的登錄過程簡化,同時保持了安全性的高效。在傳統(tǒng)的多點登錄場景中,用戶往往需要為每個應用或系統(tǒng)設置不同的密碼,這不僅增加了管理復雜度,同時也增加了泄露密碼的風險。而...

    單點登錄系統(tǒng)SSO
    單點登錄系統(tǒng)(SSO)是一種安全機制,允許用戶在不同應用之間使用相同的登錄憑證進行身份驗證。它的實現(xiàn)原理基于一次性的身份驗證過程,用戶在完成一次身份驗證后,可以在多個關聯(lián)應用中使用相同的憑證進行訪問,而無需重復驗證。SSO的實現(xiàn)流程通常涉及到三個主要步驟:身份驗證、認證和會話管理。首先,用戶通過...

    系統(tǒng)的講解 - SSO單點登錄
    SSO單點登錄詳解SSO,全稱Single Sign On,即一次登錄,多系統(tǒng)訪問。它簡化了用戶在不同相互信任的應用系統(tǒng)間的登錄流程。如阿里巴巴集團的淘寶網(wǎng)、天貓網(wǎng)等,用戶只需在其中一個網(wǎng)站登錄,即可無需再次驗證訪問其他網(wǎng)站。從用戶角度看,SSO提供了一站式體驗,無需記憶多個賬戶和密碼,非常方便。對系統(tǒng)管理...

    sso是什么意思
    一、單點登錄定義 單點登錄是一種技術(shù)或系統(tǒng)方法,用戶只需要在一個特定系統(tǒng)上登錄一次,就能通過該認證訪問多個相關的應用程序或服務。這意味著用戶不需要在每個應用程序或服務上分別進行身份驗證,從而簡化了用戶的登錄過程。二、SSO的工作原理 單點登錄系統(tǒng)的工作原理基于用戶的身份憑證。當用戶首次訪問...

    單點登錄 (SSO):SAML、OAuth2、OIDC 簡化
    單點登錄(SSO)是一種用戶僅需驗證一次身份即可訪問多個應用的便捷機制。如今,網(wǎng)站數(shù)量繁多,每訪問一個都需要身份驗證,SSO大大簡化了這一過程。其核心優(yōu)勢在于用戶管理的便捷性和安全性。SSO廣泛使用的兩種協(xié)議是SAML和OAuth2。SAML(安全斷言標記語言)是一種基于XML的標準,用于在身份提供者和應用服務...

    什么是sso
    SSO,即單點登錄。單點登錄是一種計算機技術(shù)的認證方式,其主要特點是用戶只需在一個系統(tǒng)中登錄一次,即可訪問其他相關聯(lián)的系統(tǒng)。這種方式簡化了用戶的登錄過程,提高了用戶體驗。下面詳細解釋單點登錄的概念和特點。單點登錄的核心在于用戶的身份認證和授權(quán)管理。用戶在首次登錄時,系統(tǒng)會進行身份驗證并生成...

    單點登錄(SSO)看這一篇就夠了
    確保跨域登錄過程安全可靠。流程包含多個步驟,包括用戶登錄SSO、授權(quán)服務驗證、SSO生成并返回票據(jù)(TGT)等,確保系統(tǒng)間的登錄狀態(tài)同步。總結(jié)而言,單點登錄(SSO)通過簡化登錄流程,提升用戶體驗,實現(xiàn)多系統(tǒng)間的無縫登錄。了解其工作原理和實現(xiàn)細節(jié),有助于在實際應用中高效部署SSO系統(tǒng),優(yōu)化企業(yè)內(nèi)部流程。

    SSO是什么
    使用此屬性,用戶使用單個ID和密碼登錄,以便在不使用不同用戶名或密碼的情況下訪問已連接的系統(tǒng),或者在某些配置中在每個系統(tǒng)上無縫登錄。單點登錄通常使用輕量級目錄訪問協(xié)議(LDAP)和(目錄)服務器上存儲的LDAP數(shù)據(jù)庫來完成,可以使用cookie在IP網(wǎng)絡上實現(xiàn)簡單版本的單點登錄。圖為一種SSO系統(tǒng):...

    相關評說:

  • 里旺17576448023: 關于sso,我在獲取Assertion,怎么獲取的是null -
    壽縣平均: ______ SSO :單點登錄1 、使用 Cookie 解決單點登錄 技術(shù)點:1 、設置 Cookie 的路徑為 setPath("/") .即 Tomcat 的目錄下都有效2 、設置 Cookie 的域 setDomain(".itcast.com"); 即 bbs.itcast.com,或是 mail.itcast.com 有效.即跨域.3 、...
  • 里旺17576448023: 什么是單點登錄說通俗點?單點登錄如何實現(xiàn)? -
    壽縣平均: ______ 單點登錄通俗點講就是只需要登錄一次就可以訪問所有相互信任的應用系統(tǒng).應該沒有沒有比這個更通俗的了. 單點登錄如何實現(xiàn)呢?有些大公司可能會想著自己研發(fā)實現(xiàn),但是他們面臨的問題就是沒有集成公司所有的系統(tǒng),各個系統(tǒng)的協(xié)議及接口不一樣,導致無法完美的姐姐自研系統(tǒng)和沒有標準接口應用的問題. 不過現(xiàn)在已經(jīng)公司專攻這個方向并實現(xiàn)了產(chǎn)品化,比如玉符科技sso,可以去了解一下.
  • 里旺17576448023: token怎么實現(xiàn)單點登錄的? -
    壽縣平均: ______ 玉符科技可以實現(xiàn)單點登錄.玉符單點登錄的優(yōu)勢主要有:玉符SSO支持市面上所有標準協(xié)議,云服務或者本地部署都搞得定,微軟的SAML、谷歌的OIDC,包括CAS、Oauth、JWT等待各種協(xié)議都支持 可以提供自研SDK,完美解決自研系統(tǒng)或者沒有標準接口應用的問題,只需要十幾行代碼就可以完成.玉符單點登錄SSO已經(jīng)實現(xiàn)產(chǎn)品化,交付迅速,時間短,安全性強,單點登錄全部通過token令牌實現(xiàn),不會拿到用戶的密碼,安全可靠.希望我的回答對你有幫助.
  • 里旺17576448023: 如何實現(xiàn)單點登錄? -
    壽縣平均: ______ 單點登錄(Single Sign On),簡稱為 SSO,是目前比較流行的企業(yè)業(yè)務整合的解決方案之一.SSO的定義是在多個應用系統(tǒng)中,用戶只需要登錄一次就可以訪問所有相互信任的應用系統(tǒng)
  • 里旺17576448023: 多系統(tǒng)集成,單點登錄SSO,用戶登錄權(quán)限控制 -
    壽縣平均: ______ 區(qū)分這兩個User的權(quán)限,一定要有一個區(qū)分的標識,這樣SystemA和SystemB才能做到權(quán)限的管控,能作為這種區(qū)分標識的是username也好,是password也好,Ip也好,機器名也好,mac也好,只有區(qū)分出用戶,你才能做到權(quán)限分別管控.但現(xiàn)...
  • 里旺17576448023: 前端單點登錄如何實現(xiàn)? -
    壽縣平均: ______ 單點登錄的思路是這樣的,假定有個兩個系統(tǒng),A系統(tǒng)登錄一次后,再訪問B系統(tǒng)時是不需要登錄的,當訪問B系統(tǒng)時,就去登錄系統(tǒng)判斷是否有效,如果登錄系統(tǒng)放行了,說明是已經(jīng)登錄過的.所以,需要建一個登錄系統(tǒng),從登錄系統(tǒng)引出是否登錄的判斷,那么不管是哪個系統(tǒng)在訪問需要驗證是否登錄的時候都去驗證登錄系統(tǒng).
  • 里旺17576448023: 如何通過php實現(xiàn)SSO單點登錄系統(tǒng)接入功能 -
    壽縣平均: ______ 對于 B/S結(jié)構(gòu)應用系統(tǒng),用戶只需通過瀏覽器界面登錄一次,即可通過UTrust SSO單點登錄系統(tǒng)訪問后臺的多個用戶權(quán)限內(nèi)的Web應用系統(tǒng),無需逐一輸入用戶名、密碼登錄.對于 C/S結(jié)構(gòu)應用系統(tǒng),通過IE控件來實現(xiàn)對C/S系統(tǒng)客戶端的單點...
  • 里旺17576448023: 有誰知道怎么實現(xiàn)tableau server單點登錄嗎 -
    壽縣平均: ______ Tableau Server 的單點登錄選項:Tableau Server 支持多種類型的單點登錄 (SSO).利用 SSO,用戶不必顯式登錄到 Tableau Server.而是會使用用戶已經(jīng)用于身份驗證(例如,通過登錄到您的公司網(wǎng)絡)的憑據(jù)向 Tableau Server 驗證用戶...
  • 里旺17576448023: 現(xiàn)在就是不知道怎么實現(xiàn)不同系統(tǒng)之間的單點登錄? -
    壽縣平均: ______ 在“互聯(lián)網(wǎng)+”時代,伴隨著公司的業(yè)務發(fā)展和人員的增加以及“企業(yè)上云”的倡導下,企業(yè)會采購各種SaaS系統(tǒng)、OA、CRM、ERP、HR系統(tǒng)、財務系統(tǒng)等等以滿足公司的高速發(fā)展;但時間久了,IT運維卻開始吐槽“采購一時爽,維護方恨晚...
  • 里旺17576448023: asp.net 單點登錄是什么? -
    壽縣平均: ______ 單點登錄SSO(Single Sign-On)是身份管理中的一部分.SSO的一種較為通俗的定義是:SSO是指訪問同一服務器不同應用中的受保護資源的同一用戶,只需要登錄一次,即通過一個應用中的安全驗證后,再訪問其他應用中的受保護資源時,不...
  • 成人午夜精品无码区| 少妇精品亚洲一区二区成人| 十八禁啪啦拍无遮拦视频| 无遮挡国产高潮视频免费观看| 大地在线影视MV免费观看| 中文字幕在线观看| 婷婷六月亚洲中文字幕| 成全视频观看高清在线观看| 内射干少妇亚洲69xxx| 亚洲精品中文字幕无码久久久久久|