Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Azure AD対応の認証プロキシサーバをGoで作っている話
Search
YAEGASHI Takeshi
November 13, 2021
Technology
300
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Azure AD対応の認証プロキシサーバをGoで作っている話
Go Conference 2021 Autumn
https://gocon.jp/2021autumn/sessions/azure-ad-auth-server/
YAEGASHI Takeshi
November 13, 2021
More Decks by YAEGASHI Takeshi
See All by YAEGASHI Takeshi
Microsoft Entra IDとAzure App Serviceによる エンタープライズWebアプリ・サービスのプラットフォーム構築
yaegashi
0
180
Microsoft Entra/Azure による Redmine の企業内利用向けカスタマイズと運用
yaegashi
0
660
バンダイナムコスタジオにおけるクラウドネイティブなゲーム開発スタジオの挑戦
yaegashi
2
1.7k
Bandai Namco DX Cloud Studios の全貌
yaegashi
0
300
DX(開発者体験)の向上を目指す ゲーム開発インフラの進化とDX(デジタル変革)
yaegashi
0
220
ゲーム開発におけるクラウドネイティブな CI/CD の最新動向
yaegashi
0
590
rclonefunction
yaegashi
0
950
大規模ゲーム開発を支えるAzure DevOpsによるクラウドネイティブなCI/CDの紹介
yaegashi
5
2.9k
社員全員が利用できるWebダッシュボードをAzureで作ってみた話
yaegashi
3
2.9k
Other Decks in Technology
See All in Technology
Agent 時代の Kaggle 展望 / kaggle-in-the-agentic-era
upura
1
670
【CEDEC2026】『ウマ娘 プリティーダービー』 英語版のキャラクターの方言や口調をローカライズするための創造的アプローチ
cygames
PRO
1
200
トヨタ⽣産⽅式(TPS)⼊⾨
recruitengineers
PRO
2
650
認知負荷をGemini で溶かす — GKE 基盤「Orbit」における AI エージェントの実践
sansantech
PRO
1
270
モノリス Rails でも日中に rails db:migrate を走らせたい! / Daytime rails db:migrate on Monolithic Rails!
euglena1215
4
550
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1.2k
つくって納得、つかって実感! 大規模言語モデルことはじめ ver2.0
recruitengineers
PRO
3
1.2k
修正PRを食べてレビュースキルが賢くなる:Claude Codeによる自己改善サイクル
yuyaumetsu
6
1.4k
関東Kaggler会発表資料
takoi
1
200
オートロックマンションなのに、各部屋は施錠なし!? 攻撃者が組織内ネットワークで大暴れする理由 / The Front Door Is Locked, but the Rooms Are Wide Open: Why Attackers Move Freely Inside Enterprise Networks
nttcom
1
1.6k
ガバメントクラウドでのランサムウェア対策
techniczna
2
1k
GitHub CopilotのFinOps- AI CreditのObservabilityと価値を生むためのエージェント設計
yuriemori
0
140
Featured
See All Featured
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
680
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
490
My Coaching Mixtape
mlcsv
0
210
Tell your own story through comics
letsgokoyo
1
1k
Deep Space Network (abreviated)
tonyrice
0
250
Designing for Timeless Needs
cassininazir
1
430
RailsConf 2023
tenderlove
30
1.5k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
990
Crafting Experiences
bethany
1
240
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
850
How STYLIGHT went responsive
nonsquared
100
6.2k
Transcript
Azure AD対応の 認証プロキシサーバを Goで作っている話 2021/11/13 Go Conference 2021 Autumn 八重樫
剛史 Takeshi Yaegashi
自己紹介 八重樫 剛史 Takeshi Yaegashi 株式会社バンダイナムコスタジオ所属 Linux・Unix・OSS・Go 言語が好きなエンジニア 組み込みシステム開発、ゲームサーバ開発、 CI/CD
インフラ開発、 開発環境のクラウドシフトなどの業務に従事 活動場所 ホームページ・ブログ https://l0w.dev GitHub https://github.com/yaegashi Twitter https://twitter.com/hogegashi
クラウドの静的ウェブアプリ (SWA) • 静的ウェブアプリの流行 ◦ Hugo のような Static Site Generator
で作る静的ウェブサイト ◦ TypeScript や React で作るシングルページアプリ • 静的ウェブアプリに適したクラウドサービス ◦ GitHub Pages ◦ GitLab Pages ◦ Netlify ◦ Azure Static Web Apps / App Service ◦ AWS Amplify ◦ Google Firebase Hosting
クラウドの社内向け静的ウェブアプリ • 全てのユーザーについて認証・認可が必要 ◦ IPアドレス・イントラネット・ VPNに頼るアクセス制御は甘え (ゼロトラストセキュリティ ) ◦ 特定の会社や部署だけに見せる、といった細かいレベルで制御したいことがよくある
◦ Web サイトの一部分だけに認証をかけたいということも • 細かい認可のニーズに対応できるサービスがない ◦ 例えばAzure App Serviceにおいてはユーザー認証なら自動的にやってくれるが (Easy-Auth)、 認可についてはWebアプリが自分自身で判断する必要がある ◦ アプリごとになんらかの認可のためのコードを書く必要があり敷居が高い ◦ 認証だけでなく認可までコードを書かずに設定できる Webサーバがほしい
pswa - Protected Static Web Apps • Go による認証・認可つきの Web
コンテンツ・プロキシサーバ • Simple web content/proxy server that embodies enterprise zero trust security • https://github.com/yaegashi/pswa • Docker image: ghcr.io/yaegashi/pswa
pswa 特徴 • Azure Active Directory の OpenID Connect によるユーザーの認証・認可
(Azure AD 以外の IdP にも対応を検討中) • 認証ユーザーの ID トークンに含まれる groups クレームからロールを定義 ロールを使ってルートごとのアクセス認可設定 • ルートごとにリライト・リダイレクト・プロキシが設定可能 • /index.html などへのフォールバックが設定可能 シングルページアプリのホストにも利用できる
pswa.config.json - 設定ファイルの例 • routes: ルートパスとアクセスを許可 するロール、リライトやリダイレクトな どの処理を定義 • roles:
ロールの名前とそれに属する AzureAD グループのオブジェクトIDを 定義 • Azure Static Web Apps で使用する staticwebapps.config.json に似せた { "routes": [ { "route": "/admin/*", "allowedRoles": ["admin"] }, { "route": "/internal/*", "allowedRoles": ["authenticated"] }, { "route": "/api/*", "proxy": "http://backend:8080/api" } ], "roles": [ { "role": "admin", "members": [ "34a36796-6043-4dea-85e1-c6ad121a54d4", "06fe36df-51ab-49d9-aa3e-2b0034c2cbd1", "5bafeeac-804c-4ea4-95c6-11696535c8cb" ] } ] }
pswa - デモ • https://pswademo1.azurewebsites.net/ • Azure App Service の
Linux B1 に ghcr.io/yaegashi/pswa コンテナをデプロイ • Hugo で作った静的サイトを Visual Studio Code 拡張でアップロード
pswa のコンポーネント • github.com/coreos/go-oidc - OpenID Connect RP ◦ IdP
の .well-known/openid-configuration を取得してエンドポイントを自動設定 ◦ JWKS による ID トークンの署名検証 • github.com/gobwas/glob - Route path pattern matching ◦ "*.{jpg,gif,png}" のようなパターンマッチは標準ライブラリではできない • go.uber.org/zap - Logger • github.com/felixge/httpsnoop - HTTP access logging • github.com/gorilla/sessions - Session cookie store
pswa 開発進捗 • 典型的な登壇ドリブン開発(CFPを出してから考える) • 構想は一年以上、開発期間はまだ一週間 • 各所に明確なニーズがあるので2021年中に完成させたい
おわり • 認証・認可機能が充実した Web コンテンツ・プロキシサーバを作ってます • コメントやプルリクいただけるとうれしいです • ご清聴ありがとうございました