Upgrade to Pro — share decks privately, control downloads, hide ads and more …

go-ldap Contribution

kazamori
November 30, 2023

go-ldap Contribution

Kobe Engineer SakeBash #2 ~神戸のエンジニアコミュニティを盛り上げよう LT
https://acall.connpass.com/event/302038/

kazamori

November 30, 2023
Tweet

More Decks by kazamori

Other Decks in Technology

Transcript

  1. 2 Kazamori LLC © 2023 • 森本 哲也 (もりもと てつや)

    • 神戸市在住 •   カザモリ合同会社 ◦ フルリモートワークで他社の開発のお手伝いをしている ▪ 直近の事例: OSSTech株式会社様 システム開発 • 課題管理 (課題管理システム) という分野に関心がある • 言語歴は Python → Java → Go をそれぞれ5年ほどの実務経験 • プログラミングや OSS 文化が好き 自己紹介
  2. 3 Kazamori LLC © 2023 目次 LDAP プロトコル概要 1. Go

    開発と LDAP プロトコル 2. ID 連携に必要な機能をコントリビューション 3. リファレンス 4.
  3. 5 Kazamori LLC © 2023 ディレクトリサービスを提供するためのプロトコル • デファクトスタンダードでよいはず • 組織

    (社員) の ID 管理などに使われている ◦ 例) 外部サービスへ ID 連携するときに使う リファレンス • LDAPとは:LDAPの仕組みと機能、プロトコル | Okta • UCIDM 用語集 - Unicorn Cloud ID Manager (オンプレミス版) LDAP プロトコルとは ディレクトリサービス ネットワーク上の リソースに対して ID と名前を管理 するサービスの総称
  4. 6 Kazamori LLC © 2023 • OpenLDAP サーバー ◦ ミシガン大学のオリジナルの

    LDAP 実装から派生したもので OpenLDAP Project が開発しているサーバー実装 • Active Directory サーバー ◦ Windows 向けのマイクロソフト社のディレクトリサービスの実装 LDAP プロトコルのサーバー
  5. 7 Kazamori LLC © 2023 今回、紹介するのは検索リクエストの拡張で実現した事例になる • LDAP メッセージという単位で LDAP

    オペレーションを扱う LDAP プロトコルの検索リクエストの拡張 LDAPMessage ::= SEQUENCE { messageID MessageID, protocolOp CHOICE { ..., searchRequest SearchRequest, ..., intermediateResponse IntermediateResponse }, controls [0] Controls OPTIONAL } 「コントール」 という データ構造により 検索を拡張する という考え方
  6. 9 Kazamori LLC © 2023 github.com/go-ldap/ldap というライブラリがある • (名前が競合するので便宜上 go-ldap

    ライブラリと呼ぶ) • Go 言語の LDAP クライアント実装のデファクトスタンダード (たぶん) ◦ LDAP サーバーと通信するときに使うライブラリ ◦ 開発者が LDAP プロトコルを知らなくても簡単に使える 例) ldapadd, ldapmodify, ldapdelete, ldappassword などの操作 go-ldap/ldap ライブラリ
  7. 12 Kazamori LLC © 2023 時刻指定のポーリング検索で変更を検知できる • feat: enable DirSync

    control in search operation #436 ◦ 検索リクエストにリクエストコントロールを追加して、 指定した日時以降に更新されたエントリーのみを取得する リファレンス • LDAP_SERVER_DIRSYNC_OID control code Active Directory の DirSync ポーリング (2023-12-01以降)
  8. 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 検索リクエスト レプリケーション
  9. 15 Kazamori LLC © 2023 OSSTech 社のテックブログに詳細があります • OSSTech ブログ:

    go-ldap へのコントリビューション • github.com/go-ldap/ldap このスライドで紹介した内容の詳細