👌

『OSSの認証サービス Keycloak を.NETから使ってみた』という登壇をしました

2024/09/28に公開

株式会社ジェイテックジャパン CTOの高丘 @tomohisaです。2024年9月28日に.NETラボ 勉強会 2024年9月にて登壇しました。

イベントURLはこちら

https://dotnetlab.connpass.com/event/329105/

スライドはこちら。

.NETラボはYoutubeライブがそのままアーカイブとして残ります。見逃した方はどうぞ。

https://www.youtube.com/live/GTPQ_M8fauE?si=3ZF4Qufy5KzFqwXO&t=9383

Keycloakを使いたくなった背景

Sekibanでイベントソーシングをするサンプルプログラムを作っているのですが、自分でデータベースを作ってユーザー管理していると、パスワードリセットとか、ユーザー追加削除とかをまず作らないといけないので、サービスを使いたいが、特定のIDaaSに使いたくない。

success

Keycloakというのが、java製のID管理ソリューションで、コンテナで開発できるということで、便利そう。

デプロイに関しては、コンテナをクラウドにデプロイしたり、マネージドサービスを使うことも可能。

success

Keycloak Aspire連携に関して

そんなところで、Aspire Developer Day というオンラインイベントの1つで、Keycloakの紹介のYoutubeがありました。

success

リンクはこちらです。

https://www.youtube.com/watch?v=xjsB8dOLV-I

僕も個人的にKeycloak知らなかったのですが、便利そうなので自分のプロジェクトに導入してみました。
Youtubeで curlを使って検証をしている部分はわかりやすかったです。

success

こちらのサンプルがとても便利でした。

デモ

https://github.com/J-Tech-Creations/OpenAttendanceManagement

こちらのリポジトリに公開しています。

Aspire / Sekiban / ResultBox を使った勤怠サンプル
(忙しくてあまり進んでいないですが、少しずつ機能追加しています)

Keycloakをログインに使う形に対応するためにKeycloak対応を作成しています。
ApiService.Keycloak : Keycloakトークンで認証するWebAPI
Web.Keycloak : BlazorによるBFFのサンプル
Web.Keycloak.Next : Next.jsによるBFFのサンプル

success

BFF

この対応をする点で、BFFに対応することを目的としました。BFFの利点としては、こちらのページにあるようにフロントエンド専用のバックエンドAPIを作成することにより、SPAから外部のAPIを直接呼べないようにして、アプリケーションサーバーのセキュリティを向上できます。

success

BFF導入により、添付の図のように、アプリケーションサーバーへのアクセスを制限してセキュリティを向上できます。

success

まとめ

Keycloak便利そうで、BFFはセキュリティ向上しそうなので、Keycloakを使わずにも、BFF導入は検討の価値があるのではないでしょうか?

皆さんの感想でも、ローカル開発はKeycloak使って、本番はAzure EntraID B2Cに切り替えるなどできれば良さそうですねとの話もありました。確かに、設定が正しく行われるようにする必要はありそうですが、可能そうですね。やってみたいと思いました。

success

ジェイテックジャパンブログ

Discussion