#author("2019-11-20T22:56:44+00:00","default:wikiadmin","wikiadmin") #author("2019-11-21T14:08:18+00:00","default:wikiadmin","wikiadmin") -認証系の設定 *ポイント [#k72afd9e] -SpringSecurityがクラスパスに入っているとエントリポイントに@EnableWebSecurityを付与せずとも、デフォルトでアプリケーションに自動的にSpring Securityが有効になり、 -デフォルトではBASIC認証。すべてのパスにisAuthenticated()の認可がかかります。 -それをFORM認証だったり、OAuth2認証だったりに切り替えることができる *用語集 [#z5cfe4c9] |Security Principal|主体のことでセキュリティ文脈においては認証ユーザー| |Authentication|認証| |Authorization or Access Control|認可| |UserDietailService|ユーザーの検索とPW認証を行うクラス| **Authentication [#zb46f7d6] ProviderManagerを利用するとfilterのように多彩な認証方式に対応できる。 org.springframework.security.authentication.ProviderManagerがデフォルト。 実際に認証を担当するのはAuthenticationProviderでProviderManagerが内部でprovidersをlistで持っており、ループで回してサポートされるトークンの認証を請け負う。 |DaoAuthenticationProvider|DB認証だがメモリDBでも利用される| ***パスワード認証 [#vf60bd9f] https://arakan-pgm-ai.hatenablog.com/entry/2018/03/22/060000 *filter [#f742b8a8] **AbstractAuthenticationProcessingFilter オーバーライドメソッド [#o21abe56] attemptAuthenticationでユーザー情報をRequestやReponseからセットするが、実は認証はAuthenticationManagerに移譲しており、ここでは認証していないという。 prepareAuthenticationが正しいメソッド名。戻り値のAuthenticationの実装クラスのauthenticatedがtrueであれば成功とみなしている **OAuth2ClientAuthenticationProcessingFilter [#q20f8105] OAuth2の認証 **UsernamePasswordAuthenticationFilter [#y832c0b7] 一番シンプルにフォームのID/PWで認証する形式。UsernamePasswordAuthenticationTokenにID/PWを格納してAuthenticationManagerに処理は移譲する。 AbstractAuthenticationTokenのサブクラスの一つUsernamePasswordAuthenticationTokenで、このTokenのタイプごとに認証方式を切り替えることができる。 **RememberMeAuthenticationFilter [#taf0bb18] Cookieにより長期間ログインをさせたい場合に使うfilter **DigestAuthenticationFilter [#gba3e1a9] -BASIC認証やDigest認証の参考ページ http://www.ne.jp/asahi/hishidama/home/tech/java/spring/boot/web/basic-auth.html *参考サイト [#va7d29ac] 割と古いがシンプル。ただしslake https://qiita.com/literalice/items/face0a467f1477348e6b こちらの方が2.0系でgithub https://qiita.com/yoshikawaa/items/5bc6cabbc2e5815f011c OAuth2.0で必要な固有接続情報はclient-idとsecretのみ。あとはサイトで一定。 認証のフローとカスタマイズ https://www.memory-lovers.blog/entry/2018/01/10/013508 **デフォルトBasic認証のUSER/PW [#i43a51ec] ユーザーはuserでパスワードはコンソール起動時に毎回変わるので実用性はない! Using generated security password: 54847ad0-58da-4aa8-bb2b-40b4211e81ad *OAuth2有効化 [#wb8319f6] +@EnableOAuth2Ssoをエントリーポイントにつける