一、Shiro
Apacheの史郎は、Javaのセキュリティフレームワークです。
1、公式ウェブサイト:のhttp://shiro.apache.org/
図2に示すように、3つのコア・コンポーネント
件名:つまり、「現在のユーザーは、」人、サードパーティのプロセス、バックグラウンドのアカウントまたは他の同様のものを指すことがあります。件名は、現在のユーザーのセキュリティ動作を表し、セキュリティマネージャは、セキュリティ操作のすべてのユーザーを管理します。
セキュリティマネージャ:セキュリティマネージャによって内部コンポーネントのインスタンスを管理する四郎、典型的なファサードパターン、四郎のコアフレームワークであり、それを介してサービスのセキュリティ管理の多様性を提供します。
レルム:史郎とアプリケーションのセキュリティデータ間の「ブリッジ」または「コネクター」としてレルム行為。すなわち、ユーザは、認証(ログイン)および承認(アクセス制御)検証を行う際に、ある、史郎は、アプリケーション構成レルム内のユーザーとその権限から情報を検索します。
この意味では、レルムは、本質的に安全関連のDAOである:それは、データソース接続の詳細をカプセル化し、必要な場合には、史郎に関連するデータを提供します。史郎を設定する場合、複数のレルムは可能ですが、少なくとも必要です。
二、SpringBoot統合史郎
1、従属構成
<?xml version = "1.0"エンコード= "UTF-8"?> <プロジェクトのxmlns = "http://maven.apache.org/POM/4.0.0"のxmlnsを:XSI = "のhttp://www.w3 .ORG / 2001 / XMLスキーマ・インスタンス」 のxsi:のschemaLocation = "http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion> 4.0.0 </ modelVersion> <親> <のgroupId> org.springframework.boot </のgroupId> <たartifactId>ばねブートスタータ親</たartifactId> <バージョン> 2.1.9.RELEASE </バージョン> <relativePath /> <! -ルックアップ親リポジトリから- > </親> <groupIdを> com.wjy </ groupIdを> <たartifactId> shirodemo </たartifactId> <説明>デモプロジェクト <バージョン> 0.0.1-SNAPSHOT </バージョン> <名前> shirodemo </ name>の/のgroupId> <たartifactId>ばねブートスタータ試験</たartifactId>以下のための春ブーツ</記述> <プロパティ> <のjava.version> 1.8 </java.version> </プロパティ> <依存性> <依存> <groupIdを> org.springframework.boot </ groupIdを> <たartifactId>春ブート-starter </たartifactId> </依存> <依存性> <のgroupId> org.springframework.boot </のgroupId> <たartifactId>ばねブートスタータウェブ</たartifactId> </依存> <依存性> <のgroupId> ORG .springframework.boot </ groupIdを> <スコープ>テスト</スコープ> </依存関係> <依存> <のgroupId> org.springframework.boot </のgroupId> <たartifactId>ばねブートスタータデータJPA </たartifactId> </依存> <依存性> <groupIdを>のMySQL </のgroupId> <たartifactId>のMySQL-connector- Javaの</たartifactId> </依存> <依存性> <のgroupId> org.apache.shiro </のgroupId> <たartifactId>シロスプリング</たartifactId> <バージョン> 1.4.0 </バージョン> </依存> <依存> <groupIdを> org.springframework.boot </ groupIdを> ブート</ groupIdを> <たartifactId>春・ブート・デベロッパーツール</たartifactId> <スコープ>ランタイム</スコープ> <オプション> 真 </オプション> </依存関係> </依存関係> <構築> <プラグイン> <プラグイン> <groupIdを> org.springframework.boot </ groupIdを> <たartifactId>春・ブートのmaven-pluginの</たartifactId> </プラグイン> </プラグイン> </構築> </プロジェクト>
2、Shiro配置
パッケージcom.wjy.shirodemo。 輸入java.util.HashMapを; 輸入java.util.Map; 輸入org.apache.shiro.authc.credential.HashedCredentialsMatcher; 輸入org.apache.shiro.mgt.SecurityManager。 輸入org.apache.shiro.spring.web.ShiroFilterFactoryBean。 輸入org.apache.shiro.web.mgt.DefaultWebSecurityManager。 輸入org.springframework.context.annotation.Bean。 輸入org.springframework.context.annotation.Configuration。 @Configuration パブリック クラスShiroConfig { @Bean 公衆ShirFilter ShiroFilterFactoryBean(セキュリティマネージャのSecurityManager){ ShiroFilterFactoryBean shiroFilterFactoryBean = 新しい新しいShiroFilterFactoryBean(); shiroFilterFactoryBean.setSecurityManager(セキュリティマネージャ); 地図 <文字列、文字列> = filterChainDefinitionMap 新しい新規のHashMap <文字列、文字列> (); // アドレスアクセス時間ログ、即ち無しページジャンプの任意のアドレスへのアクセスがログに shiroFilterFactoryBean.setLoginUrlを(「/ログイン」); // 認証は、アドレスを介してアクセスできないことが認定されているが、許可アドレスがありませんジャンプ shiroFilterFactoryBean.setUnauthorizedUrlを(「/ unauthc」) ; // 設定したアドレスの認証が成功した後のターン shiroFilterFactoryBean.setSuccessUrl( "/ authcは/インデックス" ); // / *傍受アノン彼らは誰もがアクセスすることを許可していないと述べた ( "アノン"、 "/ *" filterChainDefinitionMap.putを); // / authcは/インデックスにアクセスするにはログインする必要があり filterChainDefinitionMapを。 PUT( "/ authcは/インデックス"、 "authcは" ); // / authcは/管理者管理者の役割がアクセスするのに必要な filterChainDefinitionMap.put( "/ authcは/管理"、 "役割[管理]を" ); // / authcは/再生可能エネルギーのために必要な作成、更新権限 filterChainDefinitionMap.put( "/ authcは/再生可能"、 "PERMS [作成、更新]" ); // / authcは/リムーバブル需要有削除权限 filterChainDefinitionMap.putを( "/ authcは/取り外し可能な"、 "パーマは、[削除]"); shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap)。 返すshiroFilterFactoryBeanを。 } @Bean 公共HashedCredentialsMatcher hashedCredentialsMatcher(){ HashedCredentialsMatcher hashedCredentialsMatcher = 新しいHashedCredentialsMatcher()。 // 散列算法 hashedCredentialsMatcher.setHashAlgorithmName(PasswordHelper.ALGORITHM_NAME)。 // 散列次数 hashedCredentialsMatcher.setHashIterations(PasswordHelper.HASH_ITERATIONS)。 返すhashedCredentialsMatcherを。 } @Bean 公衆EnceladusShiroRealm shiroRealm(){ EnceladusShiroRealm shiroRealm = 新しいEnceladusShiroRealm()。 // 原来在这里 shiroRealm.setCredentialsMatcher(hashedCredentialsMatcher()); リターンshiroRealm; } @Bean 公共のSecurityManagerのSecurityManager(){ DefaultWebSecurityManagerのSecurityManager = 新しいDefaultWebSecurityManager()。 securityManager.setRealm(shiroRealm())。 返すのSecurityManagerを。 } @Bean 公共PasswordHelper passwordHelper(){ 戻り 新たにPasswordHelper(); } }
その他のリファレンスコード:githup
検証:
(1)登録します。http:// localhost:8088 /ユーザー名を登録= wjy&パスワード= 123456?
(2)アクセスインデックスにログインしていませんします。http:// localhost:のhttp:ログインページにジャンプします8088 / authcは/インデックス// localhostを:8088 /ログイン
します。http:// localhost:8088 / doLoginユーザー名= wjy&パスワード= 123(3)間違ったパスワードを使ってログイン?
(4)ログインに成功します。http:// localhost:?8088 / doLoginユーザ名= wjy&パスワード=のhttpへ123456ジャンプ:// localhostを:8088 / authcは/インデックス
参考
どのように30分史郎使用することを学ぶために
Springboot統合史郎理解するために30分を
史郎コア設計のアイデアを