Slide 1

Slide 1 text

OSSの認証サービス Keycloak を.NETから使ってみた Aspireとコンテナで使える簡単IDaaS #dotnetlab

Slide 2

Slide 2 text

⾃⼰紹介 高丘 知央 ( Tomohisa Takaoka ) 株式会社ジェイテックジャパンCTO イベントソーシング・CQRSフレームワーク Sekiban メンテナ 米国カリフォルニア州ロングビーチ在住(ロスの近く) ● X : @tomohisa ● Github : @tomohisa ● Linkedin : tomohisatakaoka 自作キーボード、3Dプリント自作トラックボール製作 11月に.NETラボ現地参加できそう #dotnetlab 🆗

Slide 3

Slide 3 text

最近の登壇活動 🆗 #dotnetlab オープンデベロッパーカンファレン スや吉祥寺.pmで登壇して、.NET の良さを伝えています。 イベントソーシングに関しての実情 調査のために多くの開発者にお願 いして、55名のアンケートを取りま した。 Sekiban の Githubスターしてくださ るととても嬉しいです 🥹 https://github.com/J-Tech-Japan/Sekiban

Slide 4

Slide 4 text

株式会社ジェイテックジャパンの紹介 ● 創業50年を超えた総合IT企業、株式会社 ジャパンテクニカルソフトウェア (JTS) のグループ企業。 ● New York 所在 J-Tech Creations, Inc. の 東京拠点。 ● B2C / B2B アプリケーションを 開発‧運⽤するソフトウェア開発企業。 ● .NET‧Azure 等 Microsoft の 技術スタックを主に使⽤。 🆗 #dotnetlab

Slide 5

Slide 5 text

Overview 「OSSの認証サービス Keycloak を.NETから使ってみた」 1. Keycloak とは 2. .NET Aspire Keycloak 連携について 3. デモ 4. BFFによるクライアントセキュリティの向上 🆗 #dotnetlab

Slide 6

Slide 6 text

「OSSの認証サービス Keycloak を .NETから使ってみた」 1.Keycloak とは

Slide 7

Slide 7 text

アプリケーションを開発している時にこんなことで悩みませんか? ● ユーザー管理、⾃分で作ったらそれだけで1システム ○ 2段階認証、パスワードリセット、秘匿情報の管理、etc... ● IDaaS (Octa,Auth0, EntraID ...) のどれを使うか決まっていない or 使えない ● ソーシャルログインをそれぞれ作るのも⾯倒 ● IDaaSの費⽤が⼼配 ● ひとまずユーザー管理は楽してメインの機能を作りたい そんなときに... Keycloak ... 初学者なので間違いあったら指摘してください... 🆗 #dotnetlab 「OSSの認証サービス Keycloak を.NETから使ってみた」  Keycloak とは

Slide 8

Slide 8 text

Keycloakとは? オープンソースのIDとアクセス管理ソフトウェア コンテナ上で動作する。 ● シングルサインオン(SSO) ● ユーザー管理とロールベースのアクセス制御 ● 外部IDプロバイダとの連携(SAML、OpenID Connectなど) ● 多要素認証(MFA) ● ソーシャルログイン(Google、Facebookなど) ● クライアントアプリケーション対応(Web、モバイ ル、API) これらにより、認証とアクセス制御の統合管理が可能 🆗 #dotnetlab 「OSSの認証サービス Keycloak を.NETから使ってみた」  Keycloak とは

Slide 9

Slide 9 text

組み込みでなく、別のIDサービスとする利点 ● 多機能が最初から組み込まれていて、設定次第で使⽤できる ● ソーシャルログインを⾃由に追加可能 ● 設定を変えてもアプリケーションコードは変更不要 ● OSSで開発されているのでコンテナをバージョンアップすることにより機能追加やセ キュリティの修正を⼊れることができる 🆗 #dotnetlab 「OSSの認証サービス Keycloak を.NETから使ってみた」  Keycloak とは アプリケーション サーバー ブラウザ 認証サーバー (Keycloakなど) トークン確認など ログイン トークンを返す トークン認証 データの入出力

Slide 10

Slide 10 text

🆗 #dotnetlab コンテナで動作する利点 ● ローカル開発で簡単に起動できる ● DEVモードでセキュリティ的にゆるい運⽤できるモードがある ● DEVモードではコンテナ内にデータを永続化できる ● コンテナのVolumesの削除により、データのリセットが簡単 ● Realm (テナントのようなもの)のエクスポート、インポートができ る 「OSSの認証サービス Keycloak を.NETから使ってみた」  Keycloak とは

Slide 11

Slide 11 text

🆗 #dotnetlab 本番デプロイに関して ● クラウドのコンテナ環境にデプロイ可能 ● リバースプロキシを使⽤して部分的に公開も可能 ● データベースとの連携 ● スケールする設定に関してもドキュメント多数 ● IDaaSよりも安価に済むという報告もあり ● 簡単に設定できるマネージドサービスもある 「OSSの認証サービス Keycloak を.NETから使ってみた」  Keycloak とは

Slide 12

Slide 12 text

🆗 #dotnetlab Keycloakとは まとめ 認証、認可のソフトウェア 開発が楽に⾏える マネージドサービス、コンテナデプロイも可能 これはAspireで使えたら、便利そう 「OSSの認証サービス Keycloak を.NETから使ってみた」  Keycloak とは

Slide 13

Slide 13 text

「OSSの認証サービス Keycloak を .NETから使ってみた」 2.NET Aspire Keycloak 連携について

Slide 14

Slide 14 text

🆗 #dotnetlab Keycloak - Aspire 連携について .NET Aspire Developers Day 2024年7⽉23⽇ Secrets, Security, and Keycloak in .NET Aspire by Jeremy Likness - 僕はこれをみてKeycloakを知りました 最近、Aspire関連のマイクロソフトイベントがとても多いので、DB、コンテナ、その他各分野ごとのリソースが とても多い 「OSSの認証サービス Keycloak を.NETから使ってみた」 2.NET Aspire Keycloak 連携について

Slide 15

Slide 15 text

🆗 #dotnetlab Keycloak - Aspire 連携について ホスト側 : Aspire.Hosting.Keycloak 8.2.1-preview.1.24473.4 使⽤側: Aspire.Keycloak.Authentication 8.2.1-preview.1.24473.4 最近8.2でリリースされたため、ドキュメント量が少なく、使い かがわかりにくい。 Youtubeを⽌めては動かしてみての繰り返し Youtubeでは curl を使⽤してコマンドラインでログインと認証 を⾏う説明があり、勉強になった 「OSSの認証サービス Keycloak を.NETから使ってみた」 2.NET Aspire Keycloak 連携について

Slide 16

Slide 16 text

🆗 #dotnetlab 便利なサンプル aspire / playground / keycloak ⼀通り動くサンプル Host : Keycloakのコンテナを起動、設定は jsonでエクス ポートしたものを取り込むか、Webで設定 API Service : WebAPI KeycloakのJWTで認証できるように 設定している Web : Blazor Tokenはサーバーサイド側に持っている 「OSSの認証サービス Keycloak を.NETから使ってみた」 2.NET Aspire Keycloak 連携について

Slide 17

Slide 17 text

🆗 #dotnetlab サンプルを使⽤するために Keycloak - さらには認証と認可の基本、OpenID Connect, Saml, OAuth 2.0などの基本を知っておく必 要がある。 O’Reilly の実践Keycloakはアプリケーションの設定も 含め説明されていてよい。 実践Keycloak & SAMLは認証の説明がわかりやすい 英語で検索したら情報は多い 「OSSの認証サービス Keycloak を.NETから使ってみた」 2.NET Aspire Keycloak 連携について

Slide 18

Slide 18 text

「OSSの認証サービス Keycloak を .NETから使ってみた」 3. デモ

Slide 19

Slide 19 text

🆗 #dotnetlab 使⽤例を作っています J-TechCreations / OpenAttendanceManagement Aspire / Sekiban / ResultBox を使った勤怠サンプル (忙しくてあまり進んでいないですが、少しずつ機能追加 しています) Keycloakをログインに使う形に対応するためにKeycloak 対応を作成しています。 ApiService.Keycloak : Keycloakトークンで認証するWebAPI Web.Keycloak : BlazorによるBFFのサンプル Web.Keycloak.Next : Next.jsによるBFFのサンプル 「OSSの認証サービス Keycloak を.NETから使ってみた」  3. デモ

Slide 20

Slide 20 text

「OSSの認証サービス Keycloak を .NETから使ってみた」 4.BFFによるクライアント セキュリティの向上

Slide 21

Slide 21 text

🆗 #dotnetlab BFFとは? BFF(Backend For Frontend)とは、フロントエンド専⽤のバックエンドAPI ⽬的:SPA(シングルページアプリケーション)のセキュリティと開発効率を向上 役割: ● SPAから外部のAPIを直接呼び出さないようにする ● トークン(特にリフレッシュトークン)漏洩リスクの低減 ● フロントエンドと同じドメインにホストされる - CORS設定不要 利点:セキュリティ強化、開発容易化、 SPAの移植性向上など by : O’Reilly の実践Keycloak 「OSSの認証サービス Keycloak を.NETから使ってみた」  4.BFFによるクライアントセキュリティの向上

Slide 22

Slide 22 text

🆗 #dotnetlab 「OSSの認証サービス Keycloak を.NETから使ってみた」  4.BFFによるクライアントセキュリティの向上 MVC Webの場合、Cookie 認証でセキュアにできる アプリのためにAPIサーバとする場合はブラウザ版とコードが混ざり開発しにくくなる アプリではTOKENをアプリに⼊れることも多い アプリケーション サーバー ブラウザ 認証サーバー (Keycloakなど) トークン確認など ログイン DB TOKEN アプリ ログ イン Cookie認 証 ペ ー ジ の 送 信 TOKEN TOKEN認証 データの送信 アプリサーバーが外部に公開 DBは直接アクセスを防ぐこと が可能

Slide 23

Slide 23 text

🆗 #dotnetlab 「OSSの認証サービス Keycloak を.NETから使ってみた」  4.BFFによるクライアントセキュリティの向上 SPA フロントエンドはバックエンドの機能を持たない アプリとブラウザはともにjsonデータのみを⼊出⼒するため、アプリケーションサーバーは同じものを使うことも できる アプリケーション サーバー ブラウザ SPA 認証サーバー (Keycloakなど) トークン確認など ログイン DB TOKEN アプリ ログイン TOKEN認 証 デ ー タの 送 信 TOKEN TOKEN認証 データの送信 SPAサーバー バックエンドなし Vue, React etc アプリサーバーが外部に公開 DBは直接アクセスを防ぐこと が可能

Slide 24

Slide 24 text

🆗 #dotnetlab 「OSSの認証サービス Keycloak を.NETから使ってみた」  4.BFFによるクライアントセキュリティの向上 BFF Webの場合、Cookie 認証でセキュアにできる アプリのためにAPIサーバとする場合はブラウザ版とコードが混ざり開発しにくくなる アプリケーション サーバー ブラウザ 認証サーバー (Keycloakなど) トークン確認など ログイン DB アプリ TO KEN認 証 デ ー タ の 送 信 TOKEN認証 データの送信 BFFサーバー バックエンドあり Blazor, Next, Nuxt etc TOKEN TOKEN送信 Cookie認証 ページの送信 BFFサーバー バックエンドあり WebAPI, Node etc TOKEN認証 データの送信 TOKEN ログイン アプリ用 TOKEN認証 データの送信 TOKEN TOKEN WAFなどのセキュリティで アプリサーバーやDBを守 ることが可能

Slide 25

Slide 25 text

まとめ

Slide 26

Slide 26 text

まとめ ● ⾃分で管理できる認証サーバーとして Keycloakは便利 ● Aspireで使うのに、コンテナで開発できるの は便利 ● Keycloakを使うにしても他のものを使うにし ても、ログインとユーザー管理の⾃作は今の 時代は⼤変。ID専⽤サービスを使うのがよい ● トークンをバックエンドに保持できるBFFパ ターンがセキュリティ的に有利。Blazorはそ の点素敵 🆗 #dotnetlab

Slide 27

Slide 27 text

質問、感想などありましたらXなどで連絡ください @tomohisa Dotnet Aspire はこちら https://github.com/dotnet/aspire Keycloakはこちら https://www.keycloak.org/ OpenAttendanceManagementはこちら https://github.com/J-Tech-Creations/OpenAttendanceManagement J-Tech Japan Tech Blog https://zenn.dev/p/jtechjapan_pub おわり 🆗 #dotnetlab