#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をエントリーポイントにつける

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS