スプリングセキュリティと角度におけるJWT認証
5742 ワード
このブログ記事では、Springセキュリティ、スプリングブート、スプリングデータ、アングルを使用したJSON Webトークン認証について説明します.ソースコードをGithub repository
イメージバイMasterTux からPixabay
導入
ヘッダー ペイロード 署名 したがって、JWTは典型的には以下のようになる.
ヘッダーは、2つの部分から成ります:JWTであるトークンのタイプとHMAC SHA 256またはRSAのような使用されている署名アルゴリズム.
例えば、
トークンの2番目の部分はペイロードです.クレームはエンティティ(典型的にはユーザ)と追加データに関するステートメントです.特許請求の3つのタイプがあります.登録、公開、および私的請求.
シグネチャ部分を作成するには、エンコードされたヘッダー、エンコードされたペイロード、秘密、ヘッダーで指定されたアルゴリズム、および記号を取る必要があります.お読みくださいhttps://jwt.io/introduction/ 詳細なワークフローと説明
ブート2.2 .X 治安 バネデータJPA Java JWT library
組み込みデータベース 実装
上記のように、春のブート、セキュリティ依存性、および依存関係を追加して空のスプリングブートプロジェクトを作成します ユーザー名とパスワードパラメータを受け入れて、UsernamePasswordAuthenticationTokenクラスを通してユーザーを認証するUserControllerクラスをつくってください
5 .メソッド
セキュリティ設定.ジャバ
6 .JwtUtil クラスはトークンを発行し、検証する責任があります.特に
JWTTtilジャバ
7.
8 . JWtrequestFilterフィルタを作成し、クライアントからのすべてのリクエストを傍受し、ベアラートークンを探します.トークンが存在する場合は、ユーザー名を抽出し、有効期限を検証します.
トークンが有効な場合は、新しいUserNamePasswordAuthenticationTokenを作成し、ユーザーの詳細とユーザーの詳細設定を設定します.Spring Security Authenticationオブジェクトとしてこれを保存してください.そして、それはこのユーザーが認証されて、セキュリティチェーンで続くというSpring Securityに話します.
10 .このフィルタが動作するためには、SecurityConfigでそれを追加します.
h 2メモリデータベースをデータベースとして用いた.And アプリケーションを起動するには、Spring BootクラスJWtSpringSecurityApplicationを実行します 今すぐ行くhttp://localhost:8080/h2-console データベースを表示し、資格情報を入力するには、次の手順に従います メモリデータベースにおけるH 2
問合せで既存のユーザをチェックする
5 . Src/webappディレクトリに移動し、すべての依存関係をインストールする
8 .資格情報管理者admin/adminを入力し、ホームページにリダイレクトされます.
ホームページでは、最初の負荷の間、前のページ(クッキーとして格納されている)からトークンを使用し、そのトークンをスプリングブートアプリケーション(そのトークンが有効であることを確認するために)を提示することでユーザー情報を取得します
有効期限付きJWTトークンのネットワークタブを参照してください
のホームページ
結論
イメージバイMasterTux からPixabay
導入
JSONウェブトークン( JWT )はオープンスタンダード(RFC 7519 ) これは、JSONオブジェクトとしてのパーティー間の情報を安全に送信するためのコンパクトで自己完結型の方法を定義します.それはデジタル署名されているので、この情報を確認し、信頼できる.JWTSはRSAまたはECDSAを使用して秘密(HMACアルゴリズムで)または公開/秘密キーペアを使用して署名することができます.
トークン構造
コンパクトな形式では、JSONウェブトークンはドットで区切られた3つの部分から成ります.
), では、
コンパクトな形式では、JSONウェブトークンはドットで区切られた3つの部分から成ります
.
), では、xxxxx.yyyyy.zzzzz
ヘッダー
ヘッダーは、2つの部分から成ります:JWTであるトークンのタイプとHMAC SHA 256またはRSAのような使用されている署名アルゴリズム.
例えば、
{
"alg": "HS256",
"typ": "JWT"
}
次に、このJSONはJWTの最初の部分を形成するためにBase 64 URL符号化されます.ペイロード
トークンの2番目の部分はペイロードです.クレームはエンティティ(典型的にはユーザ)と追加データに関するステートメントです.特許請求の3つのタイプがあります.登録、公開、および私的請求.
署名
シグネチャ部分を作成するには、エンコードされたヘッダー、エンコードされたペイロード、秘密、ヘッダーで指定されたアルゴリズム、および記号を取る必要があります.お読みくださいhttps://jwt.io/introduction/ 詳細なワークフローと説明
技術
実装
多くのオープンソースのJWT実装が利用可能ですall languages . このブログの投稿では、Javaを使用しますjjwt このブログ記事の図書館.
POMXML
@PostMapping(value = {**"/authenticate"**,**"/login"**})
**public** Object loginUser(@RequestParam String username, @RequestParam String password)
{
Authentication authentication=**authenticationManager**.authenticate( **new** UsernamePasswordAuthenticationToken(username, password));
**return** mapUserAndReturnJwtToken(authentication,**true**);
}
4 .プロジェクトの標準的なSpringセキュリティ設定を定義するSecurityConfigクラスを作成します.5 .メソッド
public void configure(HttpSecurity http)
認証がユーザコントローラクラスで手動で行われているので、すべてのリクエストをログインURLに許可しますセキュリティ設定.ジャバ
6 .JwtUtil クラスはトークンを発行し、検証する責任があります.特に
createToken()
メソッドは、プロパティファイルからカスタムキーを使用して24時間有効期限と符号付きトークンを作成しますJWTTtilジャバ
7.
validateToken()
指定したトークンの有効期限を検証する8 . JWtrequestFilterフィルタを作成し、クライアントからのすべてのリクエストを傍受し、ベアラートークンを探します.トークンが存在する場合は、ユーザー名を抽出し、有効期限を検証します.
トークンが有効な場合は、新しいUserNamePasswordAuthenticationTokenを作成し、ユーザーの詳細とユーザーの詳細設定を設定します.Spring Security Authenticationオブジェクトとしてこれを保存してください.そして、それはこのユーザーが認証されて、セキュリティチェーンで続くというSpring Securityに話します.
10 .このフィルタが動作するためには、SecurityConfigでそれを追加します.
http.addFilterBefore(**jwtRequestFilter**,UsernamePasswordAuthenticationFilter.**class**);
11デモを表示するには、2ページの角度プロジェクトを生成します.ログインとホームページテスト
schema.sql
src/main/resourcesディレクトリのファイルが必要なテーブルを作成します.data.sql
サンプル挿入ユーザーとロール問合せで既存のユーザをチェックする
SELECT * FROM CORE_USER.
結果が表示されない場合は、SQL文をdata.sql
src/main/resourcesで実行します.5 . Src/webappディレクトリに移動し、すべての依存関係をインストールする
$ npm install
6 .角度アプリケーションを起動する$ npm run start --watch
7 .今すぐhttp://localhost:4200 ログインページにリダイレクトされます8 .資格情報管理者admin/adminを入力し、ホームページにリダイレクトされます.
ホームページでは、最初の負荷の間、前のページ(クッキーとして格納されている)からトークンを使用し、そのトークンをスプリングブートアプリケーション(そのトークンが有効であることを確認するために)を提示することでユーザー情報を取得します
有効期限付きJWTトークンのネットワークタブを参照してください
のホームページ
結論
コードアップロードGithub 参考のために、ハッピーコーディング:
Reference
この問題について(スプリングセキュリティと角度におけるJWT認証), 我々は、より多くの情報をここで見つけました
https://dev.to/pavankjadda/jwt-authentication-in-spring-security-and-angular-2ehk
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について(スプリングセキュリティと角度におけるJWT認証), 我々は、より多くの情報をここで見つけました https://dev.to/pavankjadda/jwt-authentication-in-spring-security-and-angular-2ehkテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol