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
290
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
640
バンダイナムコスタジオにおけるクラウドネイティブなゲーム開発スタジオの挑戦
yaegashi
2
1.6k
Bandai Namco DX Cloud Studios の全貌
yaegashi
0
290
DX(開発者体験)の向上を目指す ゲーム開発インフラの進化とDX(デジタル変革)
yaegashi
0
210
ゲーム開発におけるクラウドネイティブな CI/CD の最新動向
yaegashi
0
580
rclonefunction
yaegashi
0
940
大規模ゲーム開発を支えるAzure DevOpsによるクラウドネイティブなCI/CDの紹介
yaegashi
5
2.8k
社員全員が利用できるWebダッシュボードをAzureで作ってみた話
yaegashi
3
2.8k
Other Decks in Technology
See All in Technology
最適な自走を最小限の支援で — M&Aで拡大する組織で少人数SREが挑んだ1年 / SRE NEXT 2026
genda
0
1.3k
Type-safe IaC for Dart
coborinai
0
110
Making sense of Google’s agentic dev tools
glaforge
1
210
AI Driven AI Governance
pict3
0
440
Oracle Exadata Database Service on Cloud@Customer X11M (ExaDB-C@C) サービス概要
oracle4engineer
PRO
2
8.4k
穢れた技術選定について
watany
12
2k
Foxgloveについて 実際にExtensionを開発して公開するまでの話 / About Foxglove: The Story of Developing and Releasing an Extension
ry0_ka
0
260
ボーイスカウトルールでメモリやスキルを改善しよう
azukiazusa1
4
1.2k
壊して学ぶAWS CDK: そのcdk deployで消えるもの、残るもの
k_adachi_01
0
220
型は壁、Rustでもバグを直すな、表現できなくせよ
nwiizo
13
2.1k
AI Agent SaaS を支える自社仮想化基盤への挑戦と実運用 / ai-agent-saas-virtualization
flatt_security
2
3.9k
Claude Codeとハーネスについて考えてみる
oikon48
19
9.5k
Featured
See All Featured
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
220
Believing is Seeing
oripsolob
1
170
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
870
Fireside Chat
paigeccino
42
4k
So, you think you're a good person
axbom
PRO
2
2.1k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
800
Typedesign – Prime Four
hannesfritz
42
3.1k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
600
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.4k
Claude Code のすすめ
schroneko
67
230k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
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 コンテンツ・プロキシサーバを作ってます • コメントやプルリクいただけるとうれしいです • ご清聴ありがとうございました