データベースアカウントのパスワード暗号化の詳細な説明と例

データベースアカウントのパスワード暗号化の詳細な説明と例

データベースアカウントのパスワード暗号化の詳細な説明と例

データベースアカウントとパスワードはデータベース内で暗号化されることが多いのですが、問題があります。UserService を使用してパスワードを暗号化する場合、Spring Security で検証された暗号化方式が別途構成されるため、Spring Security も同期的に構成する必要があります。次のように:

<認証マネージャー>
  <認証プロバイダーのユーザーサービスref="userDetailService">
    <パスワード エンコーダ ref="passwordEncoder" />
  </認証プロバイダー>
</認証マネージャー>

<beans:bean class="com.sapphire.security.MyPasswordEncoder" id="passwordEncoder">
  <beans:コンストラクタ引数値="md5"></beans:コンストラクタ引数>
</beans:bean>

上記の構成ファイルに示されているように、passwordEncoder は Spring Security がアカウントを暗号化して検証する場所です。

傍受後、Spring Security はまずユーザーを検索し、自身で定義された userDetailService を通じて対応するユーザーを見つけ、次にフレームワークがパスワード一致検証を実行します。

userDetailService からユーザーを取得した後、フレームワークで定義されている DaoAuthenticationProvider に入り、認証メソッドにジャンプします。

このメソッドは、次の 2 つのチェックを実行します。

* preAuthenticationChecks: 主にユーザー情報の有効期限が切れていないかなどを確認します。呼び出しメソッドはuserDetailで定義されています。
* additionalAuthenticationChecks: これはユーザー名とパスワードの検証プロセスです。

PasswordEncoder は xml に挿入される Bean なので、自分で完成した passwordEncoder を呼び出します。

パブリッククラス MyPasswordEncoder は MessageDigestPasswordEncoder を拡張します {
  パブリックMyPasswordEncoder(文字列アルゴリズム) {
   スーパー(アルゴリズム);
  }

  @オーバーライド
  パブリックブール値isPasswordValid(文字列encPass、文字列rawPass、オブジェクトsalt) {
   encPass.equals(DigestUtils.md5DigestAsHex(rawPass.getBytes())) を返します。
  }
}

これは私の実装のシンプルなバージョンです。Spring に付属する暗号化アルゴリズムを呼び出します。非常にシンプルです。もちろん、複雑な暗号化方法を使用することもできます。これはあなた次第です。

読んでいただきありがとうございます。お役に立てれば幸いです。このサイトをサポートしていただきありがとうございます。

<<:  userdel コマンドを使用して Linux ユーザーを削除する方法の詳細なチュートリアル

>>:  Vue.js を学ぶ際に遭遇する落とし穴

推薦する

MySQL ユーザー権限管理の分析例

この記事では、MySQL ユーザー権限管理の例について説明します。ご参考までに、詳細は以下の通りです...

CSS flex 複数列レイアウト

基本的な3列レイアウト 。容器{ ディスプレイ: フレックス; 幅: 500ピクセル; 高さ: 20...

Nginx アップロードファイルのサイズを変更する簡単な方法

オリジナルリンク: https://vien.tech/article/138序文私は、マークダウン...

ウェブページのカスタム選択ボックス選択

選択ドロップダウン リスト フォームは誰もがよく知っているかもしれませんが、デフォルトのドロップダウ...

長いデータを HTML で表示するときに処理する方法

HTML で長いデータを表示する場合、マウスをその上に移動するとデータを切り捨てて完全なデータを表示...

JavaScript を使用して動的に生成されるテーブルの詳細な説明

*ページを作成する: 2つの入力ボックスとボタン*コードと手順/* 1. 入力行と列の値を取得する2...

MySQL パスワードは正しいが、ローカルにログインできない -1045

MySQLパスワードは正しいが、ローカルでログインできない -1045 ユーザー 'roo...

HTMLフォームアプリケーションにはチェックボックスとラジオボタンの使用が含まれます

チェックボックスやラジオボタンの使用を含むコードをコピーコードは次のとおりです。 <!DOCT...

Mysqlトランザクション操作の失敗を解決する方法

Mysqlトランザクション操作の失敗を解決する方法トランザクションの原子性: トランザクションは、デ...

HTML <!--...--> コメントタグの役割の詳細な分析

多くのウェブサイトのソースコードを確認すると、多くのコメントが見つかります。特に、ソース文書にコメン...

Ubuntu で FTP サーバーを構築する方法の詳細な説明 (成功保証)

1. 今日の午後、コースの要件により、Ubuntu で FTP サーバーを設定する実験を行う必要が...

TypeScript の関数

目次1. 関数の定義1.1 JavaScript の関数1.2 TypeScriptの関数2. オプ...

React 並行関数エクスペリエンス (フロントエンド並行モード)

React は、開発者が Web およびモバイルベースのアプリケーションを作成するために使用するオ...

MySQL インデックスの原理と使用例の分析

この記事では、例を使用して MySQL インデックスの原理と使用方法を説明します。ご参考までに、詳細...

MySQLで日付を比較する方法の詳細な説明

データ型が datetime であるフィールド add_time を持つテーブル product が...