国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

統(tǒng)一認(rèn)證 - Apereo CAS 客戶端的集成以及小結(jié)

AbnerMing / 2960人閱讀

摘要:所以客戶端的集成主要是單點(diǎn)登錄的集成,客戶端指定需要做安全認(rèn)證的頁(yè)面,然后的安全包檢測(cè)校驗(yàn)用戶登錄情況,并自動(dòng)與登錄頁(yè)面進(jìn)行跳轉(zhuǎn)交互。提供了很多配置的方式,有,,以及其他可查官網(wǎng)。但高度自由的一如既往的,沒有提供可視化操作的界面。

前兩篇介紹了Apereo CAS以及服務(wù)器端的安裝,但還不夠完整,服務(wù)端還沒有Application真正用起來呢!這篇文章將介紹怎么用起來
集成的目的

客戶端我們想要與Apereo CAS做什么集成呢?回顧一下Apereo CAS是做什么的?Apereo CAS的一個(gè)功能就是單點(diǎn)登錄,統(tǒng)一的登錄登出接口與頁(yè)面,讓系統(tǒng)中的模塊只需要關(guān)注在業(yè)務(wù)點(diǎn),而把安全認(rèn)證的功能交給統(tǒng)一認(rèn)證來做。所以客戶端的集成主要是單點(diǎn)登錄的集成,客戶端指定需要做安全認(rèn)證的頁(yè)面,然后Apereo CAS的安全包檢測(cè)校驗(yàn)用戶登錄情況,并自動(dòng)與CAS登錄頁(yè)面進(jìn)行跳轉(zhuǎn)交互。

客戶端的配置

Apereo CAS提供了Springboot的包,可以讓我們的集成些微方便了那么一丟丟!首先我們創(chuàng)建一個(gè)Springboot的application,里面帶了Apereo CAS start的依賴


    org.springframework.security
    spring-security-cas

同時(shí)在application.properties文件里面指定啟動(dòng)的端口 server.port = 9000

有了Apereo CAS的包之后,我們就可以進(jìn)行代碼的配置??蛻舳说呐渲冒凑誗pringSecurity的安全檢驗(yàn)流程進(jìn)行的:

用戶嘗試打開一個(gè)受保護(hù)的url,比如/admin/user

AuthenticationEntryPoint被觸發(fā)了,把用戶重定向到配置好的CAS登錄頁(yè)面https://localhost:6443/cas

用戶輸入用戶名密碼,登錄成功后, CAS會(huì)跳轉(zhuǎn)回application指定的回調(diào)url http://localhost:9000/login/cas, 并帶上ticket作為查詢參數(shù)

CasAuthenticationFilter一直在監(jiān)聽/login/cas這個(gè)路徑,當(dāng)發(fā)現(xiàn)有請(qǐng)求后,它會(huì)觸發(fā)CasTicketValidator,由CasTickerValidator檢驗(yàn)ticket的有效性

當(dāng)ticket也驗(yàn)證成功后,用戶將會(huì)被跳轉(zhuǎn)回原來請(qǐng)求的受保護(hù)url

下面代碼大致描述了這個(gè)過程:

@Bean
public ServiceProperties serviceProperties() {
    ServiceProperties serviceProperties = new ServiceProperties();
    serviceProperties.setService("http://localhost:9000/login/cas");
    serviceProperties.setSendRenew(false);
    return serviceProperties;
}
 
@Bean
@Primary
public AuthenticationEntryPoint authenticationEntryPoint(
  ServiceProperties sP) {
  
    CasAuthenticationEntryPoint entryPoint
      = new CasAuthenticationEntryPoint();
    entryPoint.setLoginUrl("https://localhost:6443/cas/login");
    entryPoint.setServiceProperties(sP);
    return entryPoint;
}
 
@Bean
public TicketValidator ticketValidator() {
    return new Cas30ServiceTicketValidator(
      "https://localhost:6443/cas");
}
 
@Bean
public CasAuthenticationProvider casAuthenticationProvider() {
  
    CasAuthenticationProvider provider = new CasAuthenticationProvider();
    provider.setServiceProperties(serviceProperties());
    provider.setTicketValidator(ticketValidator());
    provider.setUserDetailsService(
      s -> new User("casuser", "Mellon", true, true, true, true,
        AuthorityUtils.createAuthorityList("ROLE_ADMIN")));
    provider.setKey("CAS_PROVIDER_LOCALHOST_9000");
    return provider;
}
@EnableWebSecurity
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
 
    private AuthenticationProvider authenticationProvider;
    private AuthenticationEntryPoint authenticationEntryPoint;
    private SingleSignOutFilter singleSignOutFilter;
    private LogoutFilter logoutFilter;
 
    @Autowired
    public SecurityConfig(CasAuthenticationProvider casAuthenticationProvider, AuthenticationEntryPoint eP,
                          LogoutFilter lF
                          , SingleSignOutFilter ssF
    ) {
        this.authenticationProvider = casAuthenticationProvider;
        this.authenticationEntryPoint = eP;
 
        this.logoutFilter = lF;
        this.singleSignOutFilter = ssF;
 
    }
     
    // ...
 
    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
      auth.authenticationProvider(authenticationProvider);
    }
 
    @Override
    protected AuthenticationManager authenticationManager() throws Exception {
      return new ProviderManager(Arrays.asList(authenticationProvider));
    }
 
    @Bean
    public CasAuthenticationFilter casAuthenticationFilter(ServiceProperties sP) throws Exception {
      CasAuthenticationFilter filter = new CasAuthenticationFilter();
      filter.setServiceProperties(sP);
      filter.setAuthenticationManager(authenticationManager());
      return filter;
    }
}

下面這個(gè)文件配置了application中所有/secured/*,login的URL都是受保護(hù)資源,都要經(jīng)過CAS認(rèn)證過才可以訪問:

@EnableWebSecurity
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
 
    @Override
    protected void configure(HttpSecurity http) throws Exception {
      http
        .authorizeRequests()
        .regexMatchers("/secured.*", "/login")
        .authenticated()
        .and()
        .authorizeRequests()
        .regexMatchers("/")
        .permitAll()
        .and()
        .httpBasic()
        .authenticationEntryPoint(authenticationEntryPoint);
    }
    // ...
}
服務(wù)端Apereo CAS的配置

跟所有統(tǒng)一認(rèn)證平臺(tái)一樣,所有application想要跟CAS做集成的,都需要在CAS配置相應(yīng)的參數(shù)才可以使用。Apereo CAS提供了很多配置的方式,有YML,JSON, MongoDB以及其他(可查官網(wǎng))。但高度自由的CAS一如既往的,沒有提供可視化操作的界面。比如我們采用JSON的方式。首先我們需要通知Apereo CAS我們采用的是JSON的方式,并通知JSON文件的路徑在哪里

cas.serviceRegistry.initFromJson=true
cas.serviceRegistry.config.location=classpath:/services

然后我們?cè)谶@個(gè)目錄里面,創(chuàng)建一個(gè)對(duì)應(yīng)的JSON文件,保存我們的客戶端信息,為了方面管理,建議文件名為 application_id.json, 比如"secureApp_9991.json", 內(nèi)容如下:

{
    "@class" : "org.apereo.cas.services.RegexRegisteredService",
    "serviceId" : "^http://localhost:9000/login/cas",
    "name" : "CAS Spring Secured App",
    "description": "This is a Spring App that usses the CAS Server for it"s authentication",
    "id" : 19991,
    "evaluationOrder" : 1
}

第一次配置從JSON加載客戶端配置的話,需要重啟Apereo CAS。之后再加新的客戶端的話就不用再重啟,Apereo CAS會(huì)自動(dòng)監(jiān)測(cè)這個(gè)文件夾的變動(dòng)

小結(jié)

至此我們對(duì)于Apereo CAS就有了一個(gè)稍微完整一點(diǎn)點(diǎn)的了解,從服務(wù)端安裝部署,到配置,以及客戶端如何集成等。但從這個(gè)短時(shí)間的學(xué)習(xí)來看,如果企業(yè)已經(jīng)重度使用了Apereo CAS,那相信它可以很好地服務(wù)支撐企業(yè)的應(yīng)用。但如果是新的項(xiàng)目,特別是項(xiàng)目周期比較緊張的項(xiàng)目,并且團(tuán)隊(duì)之前沒有對(duì)統(tǒng)一認(rèn)證有技術(shù)積累的話,不是很建議采用Apereo CAS,這些細(xì)微的配置以及無所不在的隱藏功能,會(huì)讓你給項(xiàng)目經(jīng)理催死的! 后面我會(huì)介紹另外一個(gè)統(tǒng)一認(rèn)證的框架,個(gè)人感覺能彌補(bǔ)Apereo CAS的短板的

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/11452.html

相關(guān)文章

  • 統(tǒng)一認(rèn)證 - Apereo CAS 簡(jiǎn)介

    摘要:在將臭未臭之前,我們趕緊把其中的統(tǒng)一認(rèn)證這塊過一下。的歷史前面說了是耶魯大學(xué)實(shí)驗(yàn)室的在年出的一個(gè)開源系統(tǒng)。這次我們先看看官網(wǎng)出的一幅圖,這張圖片介紹了的組成以及支持的各種協(xié)議,各種特性,不煩看看 為什么要做這個(gè)嘗試? 微服之道,方興未艾;農(nóng)之來學(xué)者,蓋已千者! 這句是從《陶山集·太學(xué)案問》瞎改出來的。意思就是微服務(wù)的架構(gòu)理念還在不斷地發(fā)展,現(xiàn)在整個(gè)啥都 言必出微服務(wù),差點(diǎn)都到了 沒學(xué)...

    zhunjiee 評(píng)論0 收藏0
  • CAS 5.2.x 單點(diǎn)登錄 - 搭建服務(wù)端和客戶

    摘要:一簡(jiǎn)介單點(diǎn)登錄,簡(jiǎn)稱為,是目前比較流行的企業(yè)業(yè)務(wù)整合的解決方案之一。客戶端攔截未認(rèn)證的用戶請(qǐng)求,并重定向至服務(wù)端,由服務(wù)端對(duì)用戶身份進(jìn)行統(tǒng)一認(rèn)證。三搭建客戶端在官方文檔中提供了客戶端樣例,即。 一、簡(jiǎn)介 單點(diǎn)登錄(Single Sign On),簡(jiǎn)稱為 SSO,是目前比較流行的企業(yè)業(yè)務(wù)整合的解決方案之一。SSO的定義是在多個(gè)應(yīng)用系統(tǒng)中,用戶只需要登錄一次就可以訪問所有相互信任的應(yīng)用系...

    Lin_YT 評(píng)論0 收藏0
  • CAS 5.2.x 單點(diǎn)登錄 - 實(shí)現(xiàn)原理及源碼淺析

    摘要:上一篇文章簡(jiǎn)單介紹了在本地開發(fā)環(huán)境中搭建服務(wù)端和客戶端,對(duì)單點(diǎn)登錄過程有了一個(gè)直觀的認(rèn)識(shí)之后,本篇將探討單點(diǎn)登錄的實(shí)現(xiàn)原理。因此引入服務(wù)端作為用戶信息鑒別和傳遞中介,達(dá)到單點(diǎn)登錄的效果。為該流程的實(shí)現(xiàn)類。表示對(duì)返回結(jié)果的處理。 上一篇文章簡(jiǎn)單介紹了 CAS 5.2.2 在本地開發(fā)環(huán)境中搭建服務(wù)端和客戶端,對(duì)單點(diǎn)登錄過程有了一個(gè)直觀的認(rèn)識(shí)之后,本篇將探討 CAS 單點(diǎn)登錄的實(shí)現(xiàn)原理。 一...

    elisa.yang 評(píng)論0 收藏0
  • 號(hào)外:友戶通支持企業(yè)自有用戶中心啦

    摘要:針對(duì)這種情況,友戶通特定開發(fā)了聯(lián)邦用戶中心來支持企業(yè)的自有用戶中心。友戶通支持通過協(xié)議使用企業(yè)內(nèi)部的支持協(xié)議的用戶中心賬號(hào)進(jìn)行登錄。友戶通目前支持標(biāo)準(zhǔn)協(xié)議以及友戶通自定義協(xié)議可供企業(yè)集成。 友戶通做用友云的用戶系統(tǒng)也一年多了,經(jīng)常聽實(shí)施、售前等說要私有化部署友戶通,原因無非是企業(yè)的考慮到用戶安全性和單一用戶賬號(hào)的需求。但由于用戶管理的復(fù)雜性,友戶通部署與維護(hù)并不容易,因此經(jīng)常糾結(jié)在用戶...

    妤鋒シ 評(píng)論0 收藏0
  • Shiro的統(tǒng)一認(rèn)證授權(quán)

    摘要:的統(tǒng)一認(rèn)證授權(quán)是下面的一個(gè)簡(jiǎn)單,易用的權(quán)限框架,對(duì)于單體應(yīng)用來講,完全能夠極好的,快速的滿足權(quán)限的需求,所以一般在做項(xiàng)目的時(shí)候,都會(huì)成為開發(fā)者的首選。 Shiro的統(tǒng)一認(rèn)證授權(quán) Shiro是Apache下面的一個(gè)簡(jiǎn)單,易用的Java權(quán)限框架,對(duì)于單體應(yīng)用來講,Shiro完全能夠極好的,快速的滿足權(quán)限的需求,所以一般在做項(xiàng)目的時(shí)候,Shiro都會(huì)成為開發(fā)者的首選。 可是,如果你需要做第二...

    cocopeak 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<