Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Azure AD対応の認証プロキシサーバをGoで作っている話
Search
YAEGASHI Takeshi
November 13, 2021
Technology
310
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
190
Microsoft Entra/Azure による Redmine の企業内利用向けカスタマイズと運用
yaegashi
0
710
バンダイナムコスタジオにおけるクラウドネイティブなゲーム開発スタジオの挑戦
yaegashi
2
1.8k
Bandai Namco DX Cloud Studios の全貌
yaegashi
0
360
DX(開発者体験)の向上を目指す ゲーム開発インフラの進化とDX(デジタル変革)
yaegashi
0
250
ゲーム開発におけるクラウドネイティブな CI/CD の最新動向
yaegashi
0
610
rclonefunction
yaegashi
0
960
大規模ゲーム開発を支えるAzure DevOpsによるクラウドネイティブなCI/CDの紹介
yaegashi
5
3k
社員全員が利用できるWebダッシュボードをAzureで作ってみた話
yaegashi
3
2.9k
Other Decks in Technology
See All in Technology
Vibe-to-Spec開発_実践ガイド
happysamurai294
0
140
キヨさん、67歳。AIコーディングエージェントに挑む
happysamurai294
0
140
E2Eってつらくないですか?E2Eの管理コストを下げる手段とその実践
akaboshinit
6
2.9k
自律的なチームを作るためにTechPMがやらないこと
ny7760
0
440
AI AgentによるEmbedded SREの取り組み
tgidgd
1
320
[FECONF-2026] 신대륙을 향한 카카오페이증권 프론트엔드 항해기 (이주승)
l1ghthouse
0
350
WireGuard for Apache NuttX - Bringing Secure Remote Access to embedded Devices -
aki310ooooo
0
110
AI時代のエンジニアの情報発信〜個人の発信を組織の力に変える〜
ryo_kawamata
0
6.5k
AIエージェント時代、Kaggleにどう取り組むか
takanao
2
460
Copilot Coworkで「みのるん式」やってみた
minorun365
PRO
1
540
AIコーディングエージェント開発_全体像
happysamurai294
0
140
「作れる」と「リリースできる」の間にあったもの── PdMを外して見えた、PdMがやるべき仕事/Buildable ≠ Shippable: What Removing the PM Taught Me About the PM’s Job
yappli_developers
0
410
Featured
See All Featured
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
1
600
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.4k
Side Projects
sachag
456
43k
Crafting Experiences
bethany
1
400
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Ethics towards AI in product and experience design
skipperchong
2
450
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3.1k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.5k
Building Better People: How to give real-time feedback that sticks.
wjessup
371
20k
Practical Orchestrator
shlominoach
192
12k
Product Roadmaps are Hard
iamctodd
55
13k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.7k
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 コンテンツ・プロキシサーバを作ってます • コメントやプルリクいただけるとうれしいです • ご清聴ありがとうございました