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
go-ldap Contribution
Search
kazamori
November 30, 2023
Technology
1.2k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
go-ldap Contribution
Kobe Engineer SakeBash #2 ~神戸のエンジニアコミュニティを盛り上げよう LT
https://acall.connpass.com/event/302038/
kazamori
November 30, 2023
More Decks by kazamori
See All by kazamori
Try creating your own orderedmap
kazamori
1
740
Iintroduction of how big tech runs tech projects
kazamori
1
1.6k
Custom GitHub Actions by Java
kazamori
1
1.2k
Other Decks in Technology
See All in Technology
凡エンジニアがこの先生きのこるためには。〜TypeScript完全に理解したい〜
alchemy1115
2
410
VPCセキュリティ対応の最新事情
nagisa53
1
270
データと地図で読む 大井町の「かわるもの、かわらないもの」
yoshiyama_hana
0
140
Oracle Exadata Database Service on Cloud@Customer X11M (ExaDB-C@C) サービス概要
oracle4engineer
PRO
2
8.5k
設計レビューとAIハーネスで向き合う AIが生み出した新しいボトルネックの対処法 / Design Reviews and AI Harnesses Against New Bottlenecks Created by AI
nstock
4
430
人とエージェントが高め合う協業設計
kintotechdev
0
750
PHPで作って学ぶリアルタイム音声対話AIとWebSocket入門 by ムナカタ
munakata
0
130
AI時代のYAGNI:「爆速で無駄になった機能」からの学び / 20260720 Naoki Takahashi
shift_evolve
PRO
3
520
どこまでAIに任せるか 〜確率論と決定論の境界決定〜
shukob
0
450
大 AI 時代におけるC# の事情 ~ぶっちゃけトークを交えながら~
nenonaninu
0
100
AI時代こそ、スケールしないことをしよう -「作る人」から「なぜ作るか」を考える人へ / Do Things That Don't Scale in the AI Era — From How to Why
kaminashi
1
100
AICoEでAIネイティブ組織への進化
yukiogawa
0
210
Featured
See All Featured
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
420
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
The Limits of Empathy - UXLibs8
cassininazir
1
530
A designer walks into a library…
pauljervisheath
211
24k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.7k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
390
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
160
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
Mind Mapping
helmedeiros
PRO
1
290
Transcript
2023-12-01 (Fri.) Tetsuya Morimoto go-ldap への コントリビューション
2 Kazamori LLC © 2023 • 森本 哲也 (もりもと てつや)
• 神戸市在住 • カザモリ合同会社 ◦ フルリモートワークで他社の開発のお手伝いをしている ▪ 直近の事例: OSSTech株式会社様 システム開発 • 課題管理 (課題管理システム) という分野に関心がある • 言語歴は Python → Java → Go をそれぞれ5年ほどの実務経験 • プログラミングや OSS 文化が好き 自己紹介
3 Kazamori LLC © 2023 目次 LDAP プロトコル概要 1. Go
開発と LDAP プロトコル 2. ID 連携に必要な機能をコントリビューション 3. リファレンス 4.
4 LDAP プロトコル概要
5 Kazamori LLC © 2023 ディレクトリサービスを提供するためのプロトコル • デファクトスタンダードでよいはず • 組織
(社員) の ID 管理などに使われている ◦ 例) 外部サービスへ ID 連携するときに使う リファレンス • LDAPとは:LDAPの仕組みと機能、プロトコル | Okta • UCIDM 用語集 - Unicorn Cloud ID Manager (オンプレミス版) LDAP プロトコルとは ディレクトリサービス ネットワーク上の リソースに対して ID と名前を管理 するサービスの総称
6 Kazamori LLC © 2023 • OpenLDAP サーバー ◦ ミシガン大学のオリジナルの
LDAP 実装から派生したもので OpenLDAP Project が開発しているサーバー実装 • Active Directory サーバー ◦ Windows 向けのマイクロソフト社のディレクトリサービスの実装 LDAP プロトコルのサーバー
7 Kazamori LLC © 2023 今回、紹介するのは検索リクエストの拡張で実現した事例になる • LDAP メッセージという単位で LDAP
オペレーションを扱う LDAP プロトコルの検索リクエストの拡張 LDAPMessage ::= SEQUENCE { messageID MessageID, protocolOp CHOICE { ..., searchRequest SearchRequest, ..., intermediateResponse IntermediateResponse }, controls [0] Controls OPTIONAL } 「コントール」 という データ構造により 検索を拡張する という考え方
8 Go 開発と LDAP プロトコル
9 Kazamori LLC © 2023 github.com/go-ldap/ldap というライブラリがある • (名前が競合するので便宜上 go-ldap
ライブラリと呼ぶ) • Go 言語の LDAP クライアント実装のデファクトスタンダード (たぶん) ◦ LDAP サーバーと通信するときに使うライブラリ ◦ 開発者が LDAP プロトコルを知らなくても簡単に使える 例) ldapadd, ldapmodify, ldapdelete, ldappassword などの操作 go-ldap/ldap ライブラリ
10 ID 連携に必要な機能を コントリビューション
11 Kazamori LLC © 2023 LDAP サーバーの情報が更新されたときにその変更を検知したい ID 連携に求められる要件 LDAP
サーバー DB エントリ 社内の部署移動 パスワード変更 新入社員追加
12 Kazamori LLC © 2023 時刻指定のポーリング検索で変更を検知できる • feat: enable DirSync
control in search operation #436 ◦ 検索リクエストにリクエストコントロールを追加して、 指定した日時以降に更新されたエントリーのみを取得する リファレンス • LDAP_SERVER_DIRSYNC_OID control code Active Directory の DirSync ポーリング (2023-12-01以降)
13 Kazamori LLC © 2023 レプリケーションの仕組みを応用した pubsub 的なもの • Add
syncrepl (rfc-4533) consumer (persistent search) #447 ◦ LDAP の検索リクエストにリクエストコントロールを追加する ◦ サーバーの状態に応じた複数のレスポンスが返ってくる リファレンス • OpenLDAP Software 2.6 Administrator's Guide: Replication • RFC 4533 - The Lightweight Directory Access Protocol (LDAP) Content Synchronization Operation OpenLDAP サーバーの syncrepl 検索リクエスト レプリケーション
14 リファレンス
15 Kazamori LLC © 2023 OSSTech 社のテックブログに詳細があります • OSSTech ブログ:
go-ldap へのコントリビューション • github.com/go-ldap/ldap このスライドで紹介した内容の詳細
ありがとうございました!