KeycloakをIdPにしてSpring Security OAuth 2.0 Login/Client を試してみる
はじめに
また、認可サーバ(IdP)にはローカルで立てたKeycloakを用いますのでそちらのセットアップ手順も記載します。
いつもGitブランチ運用でこまること、考慮すべきポイントのまとめ
現在、新しいプロジェクトに参画してGitのブランチ戦略を考えています。
何回かブランチ戦略を考え、そして運用してきたのですが、思うところを書いてみます。
Spring Security OAuth 2.0 Client の auto-configuration
上記のクラスが Import
しているもの(など):
-
OAuth2ClientRegistrationRepositoryConfiguration
-
ClientRegistrationRepository
bean 定義。-
OAuth2ClientProperties
(spring.security.oauth2.client
)プロパティから定義を取得して生成するインメモリレジストリを生成。
-
-
-
OAuth2WebSecurityConfiguration
-
OAuth2AuthorizedClientService
bean 定義。 -
OAuth2AuthorizedClientRepository
bean 定義。 -
WebSecurityConfigurerAdapter
デフォルト実装。-
全てのリクエストに authenticated を要求する。 oauth2Login, oauth2Client 有効化。
-
`WebClient` の 覚書
RestTemplateBuilder
のBean
がsingleton-socpeかつちょっと変態的なインスタンス生成を行っていたので驚いた、というエントリを昔書きました:ところで、現時点で
RestTemplate
は既に maintenance mode なので、新規実装に用いるのは忍びないなあ、と思い、WebClient
を利用する前提で薦めることにしました。クッキーの挙動は Same Origin Policy に従う…わけではない
次のQiitaのコメントを見て、そうなんだ、となりました:
`git config pull.ff only` を設定しておこう
私は普段全く
git pull
は使わず、git fetch
で賄ってきたのですが、今日たまたまgit pull
を行ったところ、いつの頃からか次のようなメッセージが出るようになっていることに気づきました:Spring Security から認可サーバサポートが無くなる、というのは取り敢えず見直されています
世の中に認可サーバー製品がたくさんあるので、Spring Securityではサポートしないことを決定しました
Spring Bootブックレビュー Spring Boot 2 入門: 基礎から実演まで
Kindle Unlimited でいくつかのSpring Framework/Spring Boot 本が読めることに気づきました。
もし入門本として有用なものがあれば初心者の方に薦めていきたいなと考え、今回それらを呼んでみましたので感想を記録します。
Spring SecurityのOAuth2.0関連の歴史を調査し実装してみた
Qiita に昔(2019年中頃)書いていた資料を転記し忘れていたので構成を見直してアップロードし直します。
2020年現在の状況はまた更新されています。次のURLを参照してください。
Gradleプラグイン/アノテーションプロセッシング調査
元々JBoss/WildFlyの流れで開発してきたのでずっとMavenを利用してきたのですが、今度のプロジェクトではGradleを使うことに決まったようで、新しい知識が必要となりました。
ISO 8601では 24:00 は妥当だったが改訂によりNGになった
ISO 8601 の以前のspecでは、
0:00
も24:00
も両方妥当な表記だったらしいです。 実際、"ISO8601 24:00" みたいなキーワードで検索するとそのように説明しているサイトも複数ヒットします。Spring Boot で Controller と Repositoryを同じクラスで併用する
…なんてことができたんですね。こんなコード:
@RestController @Repository public interface VehicleInterface extends JpaRepository<vehicle, Long> { @Query("select u from vehicle u where u.year = :year") @RequestMapping(value = "/vehicles", method = RequestMethod.GET) List<vehicle> findByYearEquals(@Param("year") Integer year); }
http://localhost:8080/vehicles?year=2010 的なURLでアクセスします。
Spring-BootでJSPを使う
https://start.spring.io/ で depencencies に
Spring Web
を追加して生成します。生成された
pom.xml
に次の依存関係を追加します:pom.xml<dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> </dependency> <dependency> <!-- 必要に応じて --> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency>
appliction.properties
に次を追加します:application.propertiesspring.mvc.view.prefix=/WEB-INF/view/ spring.mvc.view.suffix=.jsp
src/main/webapp/WEB-INF/view/
の下に JSP ファイルを作成します。 -