Recipes

LDAP 디렉터리를 people-directory 타입과 재사용 가능한 LDAP 브라우저 통합으로 분리

README 링크에서 발견 · today

Software & DevOpsWork & Operations

LDAP 브라우징을 자체 통합으로 리팩터링하고 V205 config 마이그레이션을 추가합니다.

What they did

작성자는 ihub-apps 통합 시스템에서 people 디렉터리와 LDAP 브라우징이 모델링되는 방식을 재작업했습니다. `com.intrafind/ldap-directory`를 "People directory (LDAP)"로 이름을 바꾸고, `browse*` 필드와 액션을 제거했으며, Entra와 함께 `type: people-directory`를 부여했습니다. 그런 다음 여러 번 설치 가능하고, type이 없으며, 자체 bind 계정을 제공하지 않는 한 디렉터리의 연결(URL, TLS, 신뢰할 수 있는 인증서, 허용된 호스트, 로그인 제공자, base DN, bind)을 재사용하는 새로운 내장 `com.intrafind/ldap-browser` 통합을 만들었습니다. 브라우저는 `browse_search`, `browse_read`, `browse_children` 도구를 노출하고, 로그인한 비위임(non-delegated) 사용자로 제한되며, MCP gateway를 통해 제공되지 않고, 모든 호출을 감사합니다. V205 마이그레이션은 기존 `browse: true` 디렉터리를 `<dirId>-browser` 설치로 옮기고, browse 값과 액션 정책을 이전하며, 이전 `browseGroups`(기본값 `admins`)를 다시 부여하고, 앱 바인딩과 그룹 도구 권한을 재작성하며, people 검색을 `type:people-directory` bind로 전환합니다. 또한 LDAP 디렉터리용 전용 편집기를 복원하고, LDAP 브라우저와 Entra ID 디렉터리용 새 편집기를 구축했으며, 이는 새로운 admin 전용 `editor-context` 라우트로 뒷받침됩니다. 그리고 배포되는 모든 정의에 대응하는 릴리스 항목이 있는지 확인하는 릴리스 테스트(#3092)를 추가했습니다.

How it went

스택형 PR로 착지했고 전체 테스트를 통과했습니다: 330개 스위트와 4556개 단위 테스트, 그리고 people-directory, ldap, websearch, integrations, migrations, tool-loading, chat을 위한 타깃 스위트, 그리고 통과하는 Vite 클라이언트 빌드까지 포함됩니다. 새 테스트는 V205 마이그레이션(20개 케이스), admin 라우트, 재작성된 browse 테스트, 타입 바인딩 접근 케이스, 에디터 컴포넌트를 커버합니다. 신규 설치와 V204 및 V205를 적용하는 시뮬레이션 업그레이드 양쪽에서 에러 레벨 로그 없이 깔끔하게 부팅됩니다. 열린 결정이 하나 남아 있습니다: 이제 `*`가 LDAP 브라우저를 부여하므로, 로그인한 모든 사용자가 이를 바인딩한 어떤 앱을 통해서든 브라우징할 수 있으며, 이는 기본 비활성화된 앱, 위임 주체 거부, 로깅, 문서로만 완화됩니다.

Worth knowing

`*` grant 확장은 아직 해결되지 않았으며 `grant: "explicit"` 정의 플래그가 필요할 수 있습니다. V205는 `<dirId>__browse_*`를 지정하는 워크플로 노드나 에이전트 프로필을 재작성하지 않습니다(현재 배포되는 것은 없음). 마이그레이션은 스택 전반의 병합 순서(#3098부터 #3102, 그다음 이것, 그다음 스토리지 V206)에 의존하며, 릴리스 테스트 허용 목록은 V206이 반영되어야만 비워집니다. Entra `tenantId`/`clientId`는 환경 폴백을 허용하기 위해 선택 사항이 되었고, 이로 인해 검증이 런타임으로 이동했습니다.

Wiring

정의는 integrations 설정 계층에 있습니다. LDAP 디렉터리 정의는 `browse*`를 제거하고 `type: people-directory`를 얻으며 `compatibility >=5.6.0`과 1.0.0 릴리스가 적용됩니다. 새로운 `com.intrafind/ldap-browser` 정의는 내장형이고 typeless이며 multi-install이고 id로 디렉터리 설치를 참조합니다. 런타임에서 브라우저는 디렉터리를 해석하고, 자체 자격 증명이 없으면 연결 설정과 bind를 상속하며, 디렉터리의 요청 큐를 공유합니다. 도구 id는 `<browserId>__browse_search|browse_read|browse_children`이며, `actions`가 없는 바인딩은 세 가지 모두를 바인딩합니다. 접근은 `permissions.integrations` 그룹 부여와 함께 principal이 로그인한 비위임 사용자이고 디렉터리가 설치되어 활성화되어 있다는 검사로 제한됩니다. MCP gateway 경로는 차단되고 호출은 감사됩니다. V205 마이그레이션은 스택에서 V204 이후에 실행되며, 디렉터리, 브라우저 설치, 앱 바인딩, 그룹 도구 부여를 재작성하고 신규 설치에서 중복된 required 정의 바인딩을 제거합니다. 편집기는 프리셋, 제한, 시크릿이 없는 로그인 제공자, `AZURE_*` 플래그를 위해 `GET /api/admin/integrations/people-directories/editor-context`(관리자 전용)를 호출합니다. 릴리스 테스트는 `server/tests/integration-definition-releases.test.js`에 있으며 `test:migrations`에 연결되어 있습니다.

Try it yourself

# LDAP 브라우징을 LDAP 디렉터리 통합에서 분리하기

## 개요

이번 변경은 LDAP 디렉터리 통합에 섞여 있던 브라우징 기능을 별도의 설치형 통합으로 분리합니다. 디렉터리는 인증/바인드 정보의 소스로 남고, 브라우징은 디렉터리를 참조하는 별도 통합이 담당합니다.

## 1. `com.intrafind/ldap-directory` → "People directory (LDAP)"

- 표시 이름을 **People directory (LDAP)** 로 변경
- `browse*` 필드와 액션 제거
- `type: people-directory` 부여 (Entra와 공유)

## 2. 신규 내장 통합 `com.intrafind/ldap-browser`

- 여러 번 설치 가능
- 필수: `directory` 참조, `baseDn`, `maxResults`(기본 50, 최대 200), `denyAttributes`
- 선택: 자체 `bindMode` / `bindDn` / `bindPasswordRef`
- 디렉터리로부터 상속: URL, TLS, trusted certs, allowed hosts, sign-in provider, base DN, bind
- 디렉터리의 요청 큐 공유
- 노출 도구: `browse_search`, `browse_read`, `browse_children`

## 3. 접근 제어 및 감사

- 브라우징은 로그인한 비위임(non-delegated) 사용자로 제한
- MCP gateway로는 절대 노출하지 않음
- 각 호출을 브라우저 id와 함께 감사 로그에 기록

## 4. V205 마이그레이션

- `browse: true`인 모든 디렉터리에 대해 `<dirId>-browser` 생성
- browse 값과 액션 정책 이전
- 기존 `browseGroups`(기본 `admins`)에 권한 부여
- 앱 바인딩 및 그룹 도구 권한 재작성
- people search를 `type:people-directory` 바인드로 전환

## 5. 에디터 및 테스트

- 디렉터리, 브라우저, Entra용 전용 에디터 추가
- 관리자 전용 `editor-context` 라우트 기반
- 배포되는 모든 정의에 릴리스 엔트리가 존재하는지 검증하는 테스트 추가

Source

English

Tools in this stack