CAS 5.2.x単一ログイン-サービス側とクライアントの構築

10525 ワード

一、紹介
Single Sign On(Single Sign On)は、SSOと略称され、現在流行している企業ビジネス統合のソリューションの一つです.SSOの定義は,複数のアプリケーションシステムにおいて,ユーザが一度ログインするだけで相互信頼のあるすべてのアプリケーションシステムにアクセスできることである.
CASはオープンソースの企業レベルの単点登録システムであり、現在の最新バージョンは5.2である.x.CASには、CAS ServerとCAS Clientの2つのセクションがあります.これらのセクションは、独立して配置されています.CASクライアントは、認証されていないユーザ要求をブロックし、CASサービス側にリダイレクトし、CASサービス側がユーザのアイデンティティを統一的に認証する.
二、サービス側の構築
ローカル構築CASサービスについては、MavenとGradleに基づくOverlay構築方式が公式に提供されており、本稿ではCAS Maven WAR Overlayを使用します.
2.1 WAR Overlayとは?
Overlayテクノロジーでは、複数のプロジェクトwarを1つのプロジェクトに統合できます.プロジェクトに同じ名前のファイルがある場合、メインプロジェクトのファイルは他のプロジェクトの同じ名前のファイルを上書きします.
Overlayを用いてCASソースコードをコンパイルする必要がなく,CASソースコードへの侵入性改造も回避した.
2.2環境リスト
  • JDK 1.8
  • Tomcat 8.0+
  • IntelliJ IDEA 2017.2

  • 2.3 Overlay構築
    CAS Maven WAR Overlayをダウンロードし、pomを修正します.xml、CASバージョン5.2.2を設定します.pomを取り除くことをお勧めします.xmlファイルのwrapper-maven-pluginと不要なprofile構成.
    
        5.2.2
    

    IDEAを初めて導入すると、バックグラウンドで公式casがダウンロードされていることがわかります.war.
    プロジェクトoverlaysディレクトリの下のファイルはmavenがコンパイルしてから生成され、pom.xmlで公式casを構成する.warのファイルのファイルは除外できます.overlaysで生成しないでください.
    
        org.apache.maven.plugins
        maven-war-plugin
        2.6
        
            cas
            false
            false
            
                false
                ${manifestFileToUse}
            
            
                
                    org.apereo.cas
                    cas-server-webapp${app.server}
                    
                    
                        WEB-INF/classes/services/*
                        WEB-INF/classes/application.*
                    
                
            
        
    

    Project Structureを開くと、このプロジェクトには2つのWeb Rootがあることがわかりますが、src/main/webappディレクトリは存在せず、手動で作成する必要があります.
    overlaysディレクトリのアプリケーションをコピーします.propertiesプロファイルはresourcesディレクトリにあり、CAS WARの同名ファイルを上書きします.最終的なプロジェクトディレクトリ構造は次のとおりです.
    工事のためにtomcat 8.0を配置して起動し、CAS 5.2に注意する.x tomcat 8.0未満のバージョンはサポートされていません.コンソール印刷READYが起動に成功したことを示している.
    アクセスhttp://localhost:8080/cas/loginログイン画面に入ります.
    このうちNon-secure ConnectionはSSLの構成が必要であることを示し、Static Authenticationはユーザ構成の変更が必要であることを示し、JDBC、RESTなどに変更することができる.現在、ユーザーはアプリケーションで書き込みが死んでいます.propertiesプロファイルでは、ユーザー名はcasuser、パスワードはMellonです.
    ##
    # CAS Authentication Credentials
    #
    cas.authn.accept.users=casuser::Mellon

    2.4 Services構成
    クライアントアクセスCASは、まずサービス側で登録する必要があります.そうしないと、クライアントアクセスによって「認証されていないサービス」の警告が表示されます.
    サービス定義のためにresourcesフォルダの下にservicesフォルダを作成します.このディレクトリには、次のルールを満たす複数のJSONファイルを含めることができます.
    JSON fileName = serviceName + "-" + serviceNumericId + ".json"

    Services/LOcalhost-10000003を作成します.jsonファイルは、すべてを許可することを意味します.http://localhost最初の資格認定リクエスト:
    {
      "@class": "org.apereo.cas.services.RegexRegisteredService",
      "serviceId": "^(http)://localhost.*",
      "name": "    ",
      "id": 10000003,
      "description": "           ,  localhost       ",
      "evaluationOrder": 1
    }

    プロパティの説明は以下のとおりです.詳細は、公式ドキュメント-ServiceManagerを参照してください.
  • @class:orgでなければなりません.apereo.cas.services.RegisteredServiceの実装クラス
  • serviceId:1つまたは複数のURLアドレス
  • に一致するサービスについて記述する式.
  • name:サービス名
  • id:グローバル一意フラグ
  • evaluationOrder:複数のサービスの実行順序を定義する
  • 最後に、公式ドキュメント-service-registryに基づいて、アプリケーションを変更する必要があります.propertiesファイルは、CASサービス側にサービス定義ファイルをローカルからロードするように通知します.
    #    json  ,  false
    cas.serviceRegistry.initFromJson=true
    #        ,    
    #cas.serviceRegistry.watcherEnabled=true
    #120     
    #cas.serviceRegistry.repeatInterval=120000
    #  15   
    #cas.serviceRegistry.startDelay=15000
    #      
    #cas.serviceRegistry.config.location=classpath:/services

    起動時に次のログを印刷し、サービス登録に成功したことを示します.
    2018-03-18 23:36:08,660 INFO [org.apereo.cas.services.AbstractServicesManager] - 
    2018-03-18 23:36:08,876 INFO [org.apereo.cas.config.CasServiceRegistryInitializationConfiguration] - 
    2018-03-18 23:36:08,877 WARN [org.apereo.cas.services.ServiceRegistryInitializer] - 
    2018-03-18 23:36:09,283 INFO [org.apereo.cas.services.AbstractServicesManager] - 

    三、クライアントの構築
    CAS Javaクライアントのサンプル、cas-sample-java-webappは、公式ドキュメントに記載されています.pomを変更する.xml、tomcat 7-maven-plugin設定アクセスアドレスをhttp://localhost:8181/node1に変更します.
    
    
        org.apache.tomcat.maven
        tomcat7-maven-plugin
        2.2
        
            8181
            UTF-8
            tomcat7
            /node1
        
    

    CAS Clientは、cas-sample-java-webappのwebに対して、ブロッキングによって認証されていない要求をCASサーバにリダイレクトする.xmlファイルを変更し、サービス側、クライアントアドレスを実際のテストのアドレスに置き換えます.
    
    
    
    
        
        
            CAS Single Sign Out Filter
            org.jasig.cas.client.session.SingleSignOutFilter
            
                casServerUrlPrefix
                http://localhost:8080/cas
            
        
    
        
            org.jasig.cas.client.session.SingleSignOutHttpSessionListener
        
    
        
        
            CAS Authentication Filter
            
            org.jasig.cas.client.authentication.AuthenticationFilter
            
                casServerLoginUrl
                http://localhost:8080/cas/login
            
            
                serverName
                
                http://localhost:8181/node1
            
        
    
        
        
            CAS Validation Filter
            
            org.jasig.cas.client.validation.Cas30ProxyReceivingTicketValidationFilter
            
                casServerUrlPrefix
                http://localhost:8080/cas
            
            
                serverName
                http://localhost:8181/node1
            
            
                redirectAfterValidation
                true
            
            
                useSession
                true
            
            
                authn_method
                mfa-duo
            
        
    
        
        
            CAS HttpServletRequest Wrapper Filter
            org.jasig.cas.client.util.HttpServletRequestWrapperFilter
        
    
        
        
    
        
            CAS Single Sign Out Filter
            /*
        
    
        
            CAS Validation Filter
            /*
        
    
        
            CAS Authentication Filter
            /*
        
    
        
            CAS HttpServletRequest Wrapper Filter
            /*
        
    
        
            
                index.jsp
            
        
    

    このときhttp://localhost:8181/node1にアクセスするとhttp://localhost:8080/cas/login?service=http%3A%2F%2Flocalhost%3A8181%2Fnode1%2Fにジャンプしてユーザ情報を入力し、ログインに成功し、http://localhost:8181/node1/;jsessionid=6628138DCAAA5BA3481CD4C9238FEBFFに戻る
    同じ方法で2番目のクライアントを構成し,アクセスアドレスはhttp://localhost:8282/node2であり,node 1ログインに成功した場合,ユーザパスワードを再入力することなくnode 2バックグラウンドページにアクセスできることが分かった.
    これで、開発環境の構築が完了しました.クライアントはwebに対してのみであるため.xmlのフィルタを構成し、各ビジネスシステムに容易に統合できます.
    転載は出典を明記してください.