統合されたアナログのログイン+史郎を設定CAS 3.5.3 +春ブートサーバー(史郎は、既存の認証フレームワークを変更しません)

既存のシステムは、外部からのアクセスを必要とするため、シングルサインオンは、三の者の支援を必要としています。システム自体はマイクロサービスアーキテクチャ、サブシステムの運用独立の複数であるため、その独自のマイクロユーザ認証サービスを持っている(いないCASは、我々は十分なインフラを持っている、そして今増やすことなく増加することはできません)。顧客及びその他のアクセス(パブリック・クラウド・ネットワーク)理由は、トークン+のRedisのでは達成できないので、しかし、それはまた、外部CASのサポートを必要とします。

偽サインオンの実装を使用して、史郎が達成史郎+トークンサービス・サブシステムを使用した認証システムを既存の。今では認証サブシステムを通じて三部システム構成設定をサポートするためのCASログインが有効になっています。これは、独自の認証の実装、または三者CASを使用するかどうかは、全体のプロセスは完全に異なっています。

CASサーバーを設定します

ここで説明されていない最初からCAS 4、それはもはや今度は、公式リリース戦争を提供し、ソースコードパッケージをダウンロードする必要があり、オンラインの多くは、(ダウンロードは少し遅い依存)。4.xおよび戦争前にはhttps://mvnrepository.com/artifact/org.jasig.cas/cas-server-webappからダウンロードすることができます。ダウンロードした後、Tomcatのwebappディレクトリにそれを抽出します。

起動します。

 

 

次の設定を変更します。

 

認定除去します。https:

Tomcatの\ webappsに\ CAS \ WEB-で INF \ deployerConfigContext.xml ファイル
      のHttpClient-REF = "HttpClientを"追加バックP:requireSecure = "false"を、pの
Tomcatの\ webappsに\ CAS \ WEB- INF \春・コンフィギュレーション
      ticketGrantingTicketCookieGenerator P内部の.xmlファイル:cookieSecure = falseに変更「真」; 
      P-:クッキーcookieMaxAge =「 - 1」3600に変更されました(-1ログイン情報を保存し、3600秒は1時間で、クッキーを保存しない)
のtomcat \ webappsに\へカスの\ WEB-INF \ spring-設定
      PのwarnCookieGenerator.xml:cookieSecure = "true"に偽の読み
      P-を:クッキーcookieMaxAge = " - 1"は3600に変更されました

 シングルアウトを構成します: 

  trueに括弧内の\ \ \値:WEB-INF CASのwebapps \ Tomcatは$ {偽} cas.logout.followServiceRedirectsで-servlet.xmlをCAS

認証は、簡単なテスト(<beanクラス=「org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler」/>メモを削除する)構成やデータ発信元認証に基づくことができる(https://www.cnblogs.com/wlwl/参照P / 10056067.html)。

クライアント統合CAS春ブーツ

ライブラリの依存関係:

        < 依存性> 
            < のgroupId > net.unicon.cas </ のgroupId > 
            < たartifactId > CAS-クライアント自動構成サポート</ たartifactId > 
            < バージョン> 1.5.0-GA </ バージョン> 
        </ 依存> 
        < 依存性> 
            < のgroupId > org.jasig.cas.client </ groupIdを> 
            < たartifactId > CAS-クライアントコア</ たartifactId > 
            <バージョン>3.2.1 </ バージョン> 
            < 除外> 
                < 除外> 
                    < たartifactId >サーブレットAPI </ たartifactId > 
                    < groupIdを>のjavax.servlet </ groupIdを> 
                </ 除外> 
            </ 除外> 
        </ 依存>

application.properties次の構成に追加します。

cas.server-URLプレフィックス=にhttp:// localhost:8080 / CAS 
cas.serverログイン-URL =にhttp:// localhost:8080 / CAS /ログイン
cas.clientホスト-URL =のhttp:// localhostを: 18080 /
cas.useセッション=真
cas.validation型= CAS
casClientLogoutUrl =にhttp:// localhost:8080 / CAS /ログアウト・サービス=のhttp:// localhostを:18080 / tabase /のlogout.html
輸入net.unicon.cas.client.configuration.EnableCasClient。

@EnableCasClient // 启用CASクライアント
@CloudApplication
 パブリック クラスConsumerStarter {
     公共 静的 ボイドメイン(文字列[]引数){ 
        CloudBootstrap.run(ConsumerStarter。クラス、引数)。
    } 
} 

パッケージcom.hs。

輸入java.util.HashMapを;
輸入java.util.Map; 

輸入org.jasig.cas.client.authentication.AuthenticationFilter。
輸入org.springframework.beans.factory.annotation.Value。
インポートorg.springframework.boot.web.servlet.FilterRegistrationBean;
輸入org.springframework.context.annotation.Bean。
輸入org.springframework.context.annotation.Configuration。

@Configuration 
パブリック クラスCASAutoConfig { 
    @value( "$ {cas.server-URLプレフィックス}" プライベート文字列serverUrlPrefix。
    @value( "$ {cas.serverログイン-URL}" プライベート文字列serverLoginUrl。
    @value( "$ {cas.client-ホストURL}" プライベート文字列clientHostUrl。
 
    / ** 
     *授权过滤器
     * @return 
     * /
    @Bean 
    公共FilterRegistrationBean filterAuthenticationRegistration(){ 
        FilterRegistrationBean登録 = 新しいFilterRegistrationBean()。
        registration.setFilter(新しいAuthenticationFilter());
        // 设定匹配的路径 
        registration.addUrlPatterns( "/ *" ); 
        地図 <文字列、文字列> initParameters = 新しい HashMapの<文字列、文字列> (); 
        initParameters.put( "casServerLoginUrl" 、serverUrlPrefix)。
        initParameters.put( "serverNameの" 、clientHostUrl)。
        // 忽略的URL、 "|"
        initParameters.put( "ignorePattern"、 "/ジンバブエログアウト/成功| /インデックス" ); 
        ; registration.setInitParameters(InitParameters)
        // セットロード順 
        (1 registration.setOrder );
         戻り値の登録; 
    } 
}

 

史郎アナログログイン(史郎は、既存の認証フレームワークを変更しません)

CASのログインに成功すると、アプリケーションはユーザー名が含まれているチケットを、返します。このとき、アプリケーションはUserFilterホームは、あなたがチケットのHttpServletRequest上のユーザー名かどうかを判断でき史郎フィルタを、インターセプトされ、有効なユーザー名があり、そして、あなたはユーザ名シミュレーションをログに記録することを使用することができます。だから全体の認証プロセス史郎ほとんど変化、FormAuthenticationFilterを変更する必要はありません。

CASは、ユーザー名2.xおよび3.xのバージョンが同じではありません得る、それは注意すべきです。

バージョン2.xのクライアントの取得方法は、ユーザー名CASは渡さ:

// 以下三者都可以
session.getAttribute(CASFilter.CAS_FILTER_USER)。
session.getAttribute( "edu.yale.its.tp.cas.client.filter.user" ); 

CASFilterRequestWrapper reqWrapper = 新しいCASFilterRequestWrapper(リクエスト)。
reqWrapper.getRemoteUser())。

バージョン3.xクライアントの取得方法は、ユーザー名CASは渡さ:

HttpServletRequestのリクエスト= ServletActionContext.getRequest()。   
AttributePrincipal主 = (AttributePrincipal)request.getUserPrincipal();   
文字列名 = principal.getName();   
ロングorgnId = Long.parseLong(principal.getAttributes()( "orgnId")を取得するのtoString()。。);  

取得した後、我々は着陸をシミュレートすることができます。

        ブール isAllowed = スーパー.isAccessAllowed(要求、応答、mappedValue)。
        //
         もし(isAllowed){ 

        } そう であれば(Boolean.valueOf(BaseConfig.getConfig( "ta.casEnable"、 "偽" ))){ 
            AttributePrincipal主 = (AttributePrincipal)((HttpServletRequestの)要求).getUserPrincipal(); 
            文字列名 = principal.getName(); 
            被験者被験者 = getSubject(リクエスト、レスポンス)。
            AuthenticationTokenトークン =  UsernamePasswordToken();
            ((UsernamePasswordToken)トークン).setUsername(ユーザー名);
            ((UsernamePasswordToken)トークン).setPassword(新しい 文字 [] { '1' })。
            subject.login(トークン)。
            isAllowed = スーパー.isAccessAllowed(要求、応答、mappedValue)。
        }

shiro登出

中史郎さんlogoutFilterではsession.invalidate()を呼び出しすることができます。その後、CASを撤回するようにアドレスcasClientLogoutUrlを返します。

        / ** 
         * CAS添加开始
         * / 
        場合(StringUtils.isNotBlank(BaseConfig.getConfig( "casClientLogoutUrl" ))){ 
            ((HttpServletRequestの)要求).getSession()(無効)。
            redirectUrl = BaseConfig.getConfig( "casClientLogoutUrl" )。
        } 
        // CAS添加结束
        返し redirectUrlを。

 

敬具、CAS +史郎シミュレートログインの完全な実装に。

CASチケットの有効期限ポリシーを参照します。https://www.cnblogs.com/gao241/p/3367869.html

CASのプロセスの説明を参照します。https://www.cnblogs.com/xiatian0721/p/8136305.html

CASの公式スキーマ参照します。https://apereo.github.io/cas/5.3.x/planning/Architecture.html

おすすめ

転載: www.cnblogs.com/zhjh256/p/11489001.html