史郎:Apacheの四郎は、認証、承認、暗号化、およびセッション管理を行い、強力で使いやすいJavaのセキュリティフレームワークです。
要するに、史郎は、認証、承認、暗号化と答え管理を行うJavaセキュリティフレームワークを使用するために強力かつ簡単です。
コンセプト
あなたが誰であるか?その不定詞がauthenicateである認証証明書は、確認証識別として翻訳することができます
あなたは何ができるのである認可認可?誰の詞認可され、承認として翻訳することができ、承認
実行プロセス
フロー・チャートで初見
ユーザー書かれたコードアプリケーション
件名体が現在の「ユーザー」を表し、ユーザーは必ずしも特定の人ではない、との事を対話任意の現在のアプリケーションが対象です
SecurityManagerセキュリティマネージャは、すべての安全関連の操作は、セキュリティマネージャと相互作用し、そしてそれは、件名のすべてを管理します
レルムは、データソース、つまりセキュリティデータソースとして見ることができます。レルムrealmドメイン史郎はSecurityManagerがユーザーを認証する場合、正当なユーザの識別を決定するために比較されるレルムからユーザーを取得する必要があり、安全性のデータから得られました
史郎は、アクセス制御の4つの主要な方法でした。
プログラム内のアクセス制御によって、プログラム1.件名
2. [設定フィルターは、URLレベルの粗粒度のアクセス制御を実現するために
3.設定プロキシコントロールのアノテーションベースのきめ細かい権限
4.史郎表示アクセス制御は、ページ内のカスタムラベルのページを実装しました
カスタムレルム
我々はAuthorizingRealm、二つの方法親クラスの書き換えを継承する必要があります。
輸入org.apache.shiro.authc.AuthenticationException。 輸入org.apache.shiro.authc.AuthenticationInfo; 輸入org.apache.shiro.authc.AuthenticationToken。 輸入org.apache.shiro.authz.AuthorizationInfo; 輸入org.apache.shiro.subject.PrincipalCollection。 パブリック クラス CustomizeAuthorizingRealmは延びorg.apache.shiro.realm.AuthorizingRealm { @Overrideが 保護 AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken)がスロー含むAuthenticationException { // TODOの 戻り ヌル。 }
@Override
保護AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection){
// TODOの
戻りヌル。
}
}
doGetAuthenticationInfo
認証に関連する情報を取得する第一取得着信ユーザ名に係るユーザ情報を、
ユーザーが空の場合、そのアカウントが異常UnknownAccountExceptionを見つけられませんでした投げます。
ユーザー場合は例外をスローLockedAccountExceptionロックロックされました。
最後の世代AuthenticationInfo情報、間接的な親AuthenticatingRealm使用CredentialsMatcher裁判官のパスワードが一致すると、エラー例外がスローされますIncorrectCredentialsExceptionパスワードと一致しない場合。
パスワードは、ここにも再試行した場合も、リトライ異常ExcessiveAttemptsExceptionの数を超えるスローされます。
SimpleAuthenticationInfo情報を組み立てる際、合格する必要がありますアイデンティティ情報(ユーザー名)、資格証明書(暗号化されたパスワード)、塩(ユーザ名+塩)、CredentialsMatcher塩を暗号化するために使用され、パスワードをクリアテキストの暗号文ここでパスワードが一致渡されました
このメソッドは値を返しますAuthenticationInfo
doGetAuthorizationInfo
レルムの前に今渡された場合PrincipalCollectionは直接getPrimaryPrincipalは、ユーザー名を取得することができます呼び出すこと、アイデンティティのコレクションです。
そして、UserServiceのインタフェースを呼び出すユーザの役割と名前に基づいて正しい情報を取得します
参考記事https://www.cnblogs.com/maofa/p/6407102.html
終わり