『OSSの認証サービス Keycloak を.NETから使ってみた』という登壇をしました
株式会社ジェイテックジャパン CTOの高丘 @tomohisaです。2024年9月28日に.NETラボ 勉強会 2024年9月にて登壇しました。
イベントURLはこちら
スライドはこちら。
.NETラボはYoutubeライブがそのままアーカイブとして残ります。見逃した方はどうぞ。
Keycloakを使いたくなった背景
Sekibanでイベントソーシングをするサンプルプログラムを作っているのですが、自分でデータベースを作ってユーザー管理していると、パスワードリセットとか、ユーザー追加削除とかをまず作らないといけないので、サービスを使いたいが、特定のIDaaSに使いたくない。
Keycloakというのが、java製のID管理ソリューションで、コンテナで開発できるということで、便利そう。
デプロイに関しては、コンテナをクラウドにデプロイしたり、マネージドサービスを使うことも可能。
Keycloak Aspire連携に関して
そんなところで、Aspire Developer Day というオンラインイベントの1つで、Keycloakの紹介のYoutubeがありました。
リンクはこちらです。
僕も個人的にKeycloak知らなかったのですが、便利そうなので自分のプロジェクトに導入してみました。
Youtubeで curlを使って検証をしている部分はわかりやすかったです。
こちらのサンプルがとても便利でした。
デモ
こちらのリポジトリに公開しています。
Aspire / Sekiban / ResultBox を使った勤怠サンプル
(忙しくてあまり進んでいないですが、少しずつ機能追加しています)
Keycloakをログインに使う形に対応するためにKeycloak対応を作成しています。
ApiService.Keycloak : Keycloakトークンで認証するWebAPI
Web.Keycloak : BlazorによるBFFのサンプル
Web.Keycloak.Next : Next.jsによるBFFのサンプル
BFF
この対応をする点で、BFFに対応することを目的としました。BFFの利点としては、こちらのページにあるようにフロントエンド専用のバックエンドAPIを作成することにより、SPAから外部のAPIを直接呼べないようにして、アプリケーションサーバーのセキュリティを向上できます。
BFF導入により、添付の図のように、アプリケーションサーバーへのアクセスを制限してセキュリティを向上できます。
まとめ
Keycloak便利そうで、BFFはセキュリティ向上しそうなので、Keycloakを使わずにも、BFF導入は検討の価値があるのではないでしょうか?
皆さんの感想でも、ローカル開発はKeycloak使って、本番はAzure EntraID B2Cに切り替えるなどできれば良さそうですねとの話もありました。確かに、設定が正しく行われるようにする必要はありそうですが、可能そうですね。やってみたいと思いました。
Discussion