日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

统一用户登陆系统

發布時間:2023/12/10 windows 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 统一用户登陆系统 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

單點登陸的定義

???????? ?

簡稱為 SSO,是目前比較流行的企業業務整合的解決方案之一。SSO的定義是在多個應用系統中,用戶只需要登錄一次就可以訪問所有相互信任的應用系統。

?????

技術實現機制

?? ??當用戶第一次訪問應用系統1的時候,因為還沒有登錄,會被引導到認證系統中進行登錄;根據用戶提供的登錄信息,認證系統進行身份效驗,如果通過效驗,應該返回給用戶一個認證的憑據--ticket;用戶再訪問別的應用的時候,就會將這個ticket帶上,作為自己認證的憑據,應用系統接受到請求之后會把ticket送到認證系統進行效驗,檢查ticket的合法性。如果通過效驗,用戶就可以在不用再次登錄的情況下訪問應用系統2和應用系統3了。

?

開源的jasig單點登入系統包括如下:

????? cas-server-3.4.10:統一用戶登入的驗證系統

????? cas-client-3.2.1?用戶客戶端引入的文件

?

java系統為例:

?

統一用戶系統的集成步驟:

http://www.ja-sig.org/downloads/cas-clients/

?

1)下載cas客戶端jar

cas-client-core-3.2.1.jar

把此jar包放到WEB-INF\lib目錄下

?

2)修改web.xml添加cas過濾器filter

?

??? <!-- 用于單點退出,該過濾器用于實現單點登出功能,可選配置-->

<listener>

?????? <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>

</listener>

?

<!-- 該過濾器用于實現單點登出功能,可選配置。 -->

<filter>

?????? <filter-name>CASSingle Sign Out Filter</filter-name>

?????? <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>

</filter>

<filter-mapping>

?????? <filter-name>CASSingle Sign Out Filter</filter-name>

?????? <url-pattern>/*</url-pattern>

</filter-mapping>

?

<!-- 該過濾器負責用戶的認證工作,必須啟用它 -->

<filter>

?????? <filter-name>CASFilter</filter-name>

?????? <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>

?????? <init-param>

????????????? <param-name>casServerLoginUrl</param-name>

????????????? <param-value>https://sso.haier.com:8443/cas/login</param-value>

????????????? <!--這里的server是服務端的IP-->

?????? </init-param>

?????? <init-param>

????????????? <param-name>serverName</param-name>

????????????? <param-value>http://www.haiertest.com:58080</param-value>

?????? </init-param>

</filter>

<filter-mapping>

?????? <filter-name>CASFilter</filter-name>

?????? <url-pattern>/*</url-pattern>

</filter-mapping>

?

<!-- 該過濾器負責對Ticket的校驗工作,必須啟用它 -->

<filter>

?????? <filter-name>CASValidation Filter</filter-name>

?????? <filter-class>

????????????? org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>

?????? <init-param>

????????????? <param-name>casServerUrlPrefix</param-name>

????????????? <param-value>https://sso.haier.com:8443/cas</param-value>

?????? </init-param>

?????? <init-param>

????????????? <param-name>serverName</param-name>

????????????? <param-value>http://www.haiertest.com:58080</param-value>

?????? </init-param>

</filter>

<filter-mapping>

?????? <filter-name>CASValidation Filter</filter-name>

?????? <url-pattern>/*</url-pattern>

</filter-mapping>

?

<!--

?????? 該過濾器負責實現HttpServletRequest請求的包裹,

?????? 比如允許開發者通過HttpServletRequestgetRemoteUser()方法獲得SSO登錄用戶的登錄名,可選配置。

-->

<filter>

?????? <filter-name>CASHttpServletRequest Wrapper Filter</filter-name>

?????? <filter-class>

????????????? org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>

</filter>

<filter-mapping>

?????? <filter-name>CASHttpServletRequest Wrapper Filter</filter-name>

?????? <url-pattern>/*</url-pattern>

</filter-mapping>

?

<!--

?????? 該過濾器使得開發者可以通過org.jasig.cas.client.util.AssertionHolder來獲取用戶的登錄名。

?????? 比如AssertionHolder.getAssertion().getPrincipal().getName()

-->

<filter>

?????? <filter-name>CASAssertion Thread Local Filter</filter-name>

?????? <filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>

</filter>

<filter-mapping>

?????? <filter-name>CASAssertion Thread Local Filter</filter-name>

?????? <url-pattern>/*</url-pattern>

</filter-mapping>

?

<!-- 自動根據單點登錄的結果設置本系統的用戶信息 -->

<filter>

?????? <display-name>AutoSetUserAdapterFilter</display-name>

?????? <filter-name>AutoSetUserAdapterFilter</filter-name>

?????? <filter-class>com.haier.demo.filter.AutoSetUserAdapterFilter</filter-class>

</filter>

<filter-mapping>

?????? <filter-name>AutoSetUserAdapterFilter</filter-name>

?????? <url-pattern>/*</url-pattern>

</filter-mapping>

<!-- ======================== 單點登錄結束 ======================== -->

??? ????

?

?

?

?

3) 添加AutoSetUserAdapterFilter這個類,來自動根據CAS信息設置Session的用戶信息,

主要是通過CAS_const_cas_assertion_獲取從CAS服務器登陸的用戶名,然后再根據系統內部的用戶工具(UserUtil.java)來判斷是否已經登錄過,如果沒有登錄根據登錄名從數據庫查詢用戶信息,最后使用設置把用戶信息設置到當前session中。
這樣就把用戶信息保存到了Sessino中,我們就可以通過UserUtil工具來獲取當前登錄的用戶了

?????

?

public class AutoSetUserAdapterFilter implements Filter {

???????

??????? /**

???????? * Defaultconstructor.

???????? */

??????? publicAutoSetUserAdapterFilter() {

??????? }

?

??????? /**

???????? * @seeFilter#destroy()

???????? */

??????? public voiddestroy() {

??????? }

?

??????? /**

???????? * 過濾邏輯:首先判斷單點登錄的賬戶是否已經存在本系統中,

???????? * 如果不存在使用用戶查詢接口查詢出用戶對象并設置在Session

???????? * @seeFilter#doFilter(ServletRequest, ServletResponse, FilterChain)

???????? */

??????? public voiddoFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException,

???????????????????????ServletException {

???? ???????????HttpServletRequest httpRequest =(HttpServletRequest) request;

???????????????

??????????????? //_const_cas_assertion_CAS中存放登錄用戶名的session標志

??????????????? Objectobject =httpRequest.getSession().getAttribute("_const_cas_assertion_");

???????????????

??????????????? if(object != null) {

???????????????????????Assertion assertion = (Assertion) object;

???????????????????????String loginName = assertion.getPrincipal().getName();

???????????????????????User user = UserUtil.getCurrentUser(httpRequest.getSession());

???????????????????????

???????????????????????// 第一次登錄系統

???????????????????????if (user == null) {

???????????????????????????????WebApplicationContext wct =WebApplicationContextUtils.getWebApplicationContext(httpRequest

???????????????????????????????????????????????.getSession().getServletContext());

??????????????????????????????? UserManageruserManager = (UserManager) wct.getBean("userManager");

??????????????????????????????? user =userManager.findUserByLoginName(loginName);

??????????????????????????????? // 保存用戶信息到Session

???????????????????????????????UserUtil.saveUserToSession(httpRequest.getSession(), user);

???????????????????????}

???????????????????????

??????????????? }

???????????????chain.doFilter(request, response);

??????? }

?

??????? /**

???????? * @seeFilter#init(FilterConfig)

???????? */

??????? public voidinit(FilterConfig fConfig) throws ServletException {

??????? }

}

?

相關知識:http://hhw3.blog.163.com/blog/static/2690966201411265579770/

總結

以上是生活随笔為你收集整理的统一用户登陆系统的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品无码白浆高潮 | 天天躁夜夜躁av天天爽 | 五月导航 | 一区二区三区在线电影 | 又黄又刺激的视频 | 区一区二在线观看 | 久久人人爽人人爽 | 久在线| 日本一区二区欧美 | 欧美特级黄色大片 | 天天看黄色 | 精品91久久久久久 | 高清精品xnxxcom| av免费在线观看网站 | 69天堂 | 欧美视频在线观看一区二区 | 日韩综合av| 亚洲国产爱 | 国产精品一区二区三区久久 | avxx| 麻豆传媒在线观看 | 日本免费一区二区视频 | 自拍偷拍av | www射 | 欧美日韩xxx | 少妇真实被内射视频三四区 | 国产免费一区二区视频 | 性激情视频| 尤物在线观看 | 亚洲av无码国产精品久久 | 国产中文字幕第一页 | 欧美日韩国产精品一区 | 色哟哟免费在线观看 | 亚洲国产精品无码久久久久高潮 | 成人影| 亚洲永久精品ww.7491进入 | 720url在线观看免费版 | 一区二区播放 | 已婚少妇美妙人妻系列 | 婷婷激情视频 | 午夜激情国产 | 国产视频在线观看一区 | 久久亚洲av成人无码国产电影 | 国产精久久 | 一级特黄aaaaaa大片 | 深夜福利网 | 久久久ww | 日本成人一二三区 | 高潮无码精品色欲av午夜福利 | 色偷偷综合网 | 特级西西人体wwwww | 欧美视频一二区 | 国产精品无遮挡 | 人妻少妇偷人精品久久性色 | 久久综合狠狠综合久久综合88 | 成年人小视频 | 福利片av| 草久免费视频 | 小仙女av | 国产97在线 | 亚洲 | 狠狠操婷婷 | 激情福利在线 | 日韩香蕉视频 | 午夜精品一区二区三区免费视频 | 中文免费av | 狠狠干2021| 新版红楼梦在线高清免费观看 | 日本五十路 | 国产一区二区av在线 | 黄色aaa| av免费网 | 国产女主播在线一区二区 | 国产在线综合视频 | 日韩av资源 | 久久精品国产77777蜜臀 | 国产成人精品二区三区亚瑟 | 国产精品一区二区三区久久久 | 亚洲日本中文字幕 | 免费暧暧视频 | 天天干,夜夜操 | 四虎影视精品 | 亚洲狼人干| 麻豆精品自拍 | 免费观看国产精品视频 | 亚洲一区视频网站 | 久久国产剧情 | 福利视频三区 | 欧美黄色特级视频 | 日本国产一区二区三区 | 国产成人无码www免费视频播放 | av网站大全在线观看 | 亚洲熟妇色自偷自拍另类 | 色视频免费在线观看 | 一级美女黄色片 | 欧美视频导航 | 国产一级二级三级在线观看 | av成人在线播放 | 97人人干 | 骚视频在线观看 |