<ph type="x-smartling-placeholder"></ph>
현재 Apigee Edge 문서를 보고 있습니다.
Apigee X 문서. 정보
대상
LDAP 정책은 다음을 제공합니다.
- 인증: 요청에 제공된 사용자 인증 정보가 검증됩니다.
크리덴셜과 대조할 수 있습니다 LDAP 정책은
모든 DN 값을 비밀번호와 함께 사용할 수 있으며, 이는 해당 DN 값이
포함되지 않은 경우일 수 있습니다. 예를 들어 다음 용도로 이메일 / 비밀번호를 사용해야 한다고 가정해 보겠습니다.
있습니다. 다음과 같은 옵션을 사용할 수 있습니다.
<ph type="x-smartling-placeholder">
- </ph>
- 이메일이 요청에 포함된 경우 LDAP용 비밀번호로 사용하면 됩니다. 있습니다.
- 이메일이 요청에 없지만 다른 DN 속성 (예: 전화번호)이 있는 경우 전화번호를 사용하여 LDAP에서 해당 이메일을 가져온 다음 이메일 / 인증하려면 비밀번호를 입력합니다.
- 고유 이름 (DN) 검색: 인증 외에도 다음 작업을 수행할 수 있습니다. 또한 LDAP 정책을 사용하여 이메일, 해당 사용자에 대한 LDAP의 다른 DN 속성을 검색하는 쿼리를 수행할 수 있습니다. 검색된 DN은 변수 저장에 사용됩니다.
보호된 리소스에 대한 액세스를 LDAP의 사용자로 제한해야 하는 경우 LDAP 정책을 사용합니다. 예를 들어 관리자, 조직 사용자, 개발자와 같은 특정 서비스 제공업체를 이용해 OAuth 토큰 액세스가 불필요하거나 너무 무겁습니다. 이 정책은 또한 API 프록시 흐름에서 사용할 도메인 이름 메타데이터를 가져옵니다.
예를 들어 사용자가 성공적으로 인증된 경우에만 API 호출이 실행되도록 할 수 있습니다. 대조할 수 있습니다. 이후에 사용자에 대한 DN (도메인 이름) 속성을 인증이 성공합니다
자세한 내용은 다음을 참조하세요.
샘플
사용자 이름/비밀번호 인증
<Ldap name="4GLdapPolicy"> <LdapResource>ldap1</LdapResource> <Authentication> <UserName ref="request.header.username"/> <Password ref="request.header.password"/> <Scope>subtree</Scope> <BaseDN ref="apigee.baseDN"></BaseDN> <!-- default is dc=apigee,dc=com --> </Authentication> </Ldap>
이 샘플은 LDAP 제공자에 대한 인증을 제공합니다. 정책은 사용자 이름을 인증을 위해 LDAP로 요청을 보낼 수 있습니다.
DN 속성 인증
<Ldap name="LdapPolicy"> <LdapResource>ldap1</LdapResource> <Authentication> <Password ref="request.header.password"/> <SearchQuery>mail={request.header.mail}</SearchQuery> <Scope>subtree</Scope> <BaseDN ref="apigee.baseDN"></BaseDN> <!-- default is dc=apigee,dc=com --> </Authentication> </Ldap>
이 정책은 요청 헤더에 이메일이 있는 사용자의 DN을 가져온 다음 요청 헤더에 제공된 비밀번호로 LDAP에 대해 사용자를 인증합니다.
LDAP 검색 중
<Ldap name="LdapPolicy"> <!-- using a custom LDAP provider --> <LdapConnectorClass>com.custom.ldap.MyProvider</LdapConnectorClass> <LdapResource>MyLdap</LdapResource> <Search> <BaseDN ref="apigee.baseDN"></BaseDN> <!-- default is dc=apigee,dc=com --> <SearchQuery>mail={request.header.mail}</SearchQuery> <Attributes> <Attribute>address</Attribute> <Attribute>phone</Attribute> <Attribute>title</Attribute> </Attributes> <Scope></Scope> <!-- default is ‘subtree’ --> </Search> </Ldap>
이 정책은 맞춤 LDAP 제공업체를 참조합니다. 요청에 포함된 이메일 주소를 사용하여 헤더에서 사용자를 식별한 다음 LDAP. 검색된 DN 속성은 변수에 저장됩니다. 자세한 내용은 '변수'로 대체해야 합니다.
LDAP를 검색하고 DN 속성을 검색하려면 요청에 관리자가 포함되어야 합니다. 사용자 인증 정보를 제공합니다
요소 참조
다음은 LDAP 정책 요소 및 속성에 대한 설명입니다.
요소 |
설명 |
---|---|
|
정책 이름을 입력할 수 있는 이름 속성이 있는 상위 요소입니다. |
|
맞춤 LDAP과 함께 LDAP 정책을 사용하는 경우
provider의 경우 정규화된 LDAP 커넥터 클래스를 지정합니다.
Apigee의 |
|
LDAP 리소스의 환경 이름을 입력합니다. LDAP 리소스를 참고하세요. |
|
모든 데이터가 존재하는 LDAP의 기본 수준입니다. 예를 들어
Apigee의 LDAP 제공업체입니다. 모든 데이터는
|
|
|
인증 |
|
|
구현하는 인증 동작의 상위 요소입니다. |
|
다음 속성 중 하나를 갖는 빈 요소입니다.
사용자 이름으로 인증하지 않았거나 사용자 이름이 요청에 이 요소를 포함하지 않아도 됩니다. 요청에 사용자 이름이 포함되어 있지만 DN 속성으로 사용자를 인증하려는 경우
사용자 이름 이외의 주소(예: 이메일)에는 사용자 이메일을 가져올 수 있는 |
|
다음 속성 중 하나를 갖는 빈 요소입니다.
|
|
이메일과 같이 사용자 이름이 아닌 DN 속성을 사용하여 인증하려는 경우 요청에서 DN 속성 (예: 사용자 이름)을 가져오도록 LDAP 정책 구성 LDAP에서 사용자를 식별하고 이메일을 검색하고 있습니다. 예를 들어, LDAP가 "메일"을 정의한다고 가정하면 이메일 주소를 저장하기 위한 속성:
|
검색 |
|
|
구현하는 검색 동작의 상위 요소입니다. |
|
요청 또는 응답의 메타데이터로 사용자를 식별하여
요소를 사용하여 LDAP에서 사용자에 대한 추가 DN 속성을 검색합니다. 예를 들어
요청에 사용자 이메일이 포함되어 있고 LDAP가 다음에 대한
이 쿼리는 요청의 이메일과 일치하는 이메일을 LDAP에서 검색하고 정책은 이제 Attributes(속성)를 사용하여 해당 사용자에 대한 추가 DN 속성을 요소가 포함됩니다. |
|
하나 이상의 예를 들어 속성 값은 LDAP에 정의된 DN 속성 이름입니다. <Attributes> <Attribute>address</Attribute> <Attribute>phone</Attribute> <Attribute>title</Attribute> </Attributes> |
사용 참고사항
프라이빗 클라우드용 Apigee Edge를 사용하면 API 호출에 LDAP 제공업체를 활용할 수 있습니다. LDAP 사용 정책에 따라 애플리케이션이 LDAP에 저장된 사용자에 대해 사용자 인증 정보를 인증할 수 있으며 고유 이름(DN)을 LDAP에서 검색(즉, 이메일, 주소, 전화번호 등의 정보를 제공할 수 있습니다 반환된 DN은 API 프록시에서 추가로 사용됩니다.
LDAP 리소스 만들기
LDAP 정책은 Apigee Edge에서 만든 LDAP 리소스를 활용합니다. LDAP 리소스 LDAP 저장소에 연결 정보를 제공합니다.
LDAP 리소스를 만들고 관리하려면 다음 API와 페이로드를 사용하세요.
API
LDAP 리소스를 생성 (POST
)하거나 모든 LDAP 리소스를 나열 (GET
)합니다.
/v1/organizations/org_name/environments/environment/ldapresources
LDAP 리소스의 세부정보 (GET
), 업데이트 (POST
) 및 삭제 (DELETE
)를 가져옵니다.
/v1/organizations/org_name/environments/environment/ldapresources/ldap_resource_name
페이로드
다음은 사용법 주석이 포함된 샘플 XML 페이로드입니다.
<LdapResource name="ldap1"> <Connection> <Hosts> <!-- port is optional: defaults to 389 for ldap:// and 636 for ldaps:// --> <Host port="636">foo.com</Host> </Hosts> <SSLEnabled>false</SSLEnabled> <!-- optional, defaults to false --> <Version>3</Version> <!-- optional, defaults to 3--> <Authentication>simple</Authentication> <!-- optional, only simple supported --> <ConnectionProvider>jndi|unboundid</ConnectionProvider> <!-- required --> <ServerSetType>single|round robin|failover</ServerSetType> <!-- not applicable for jndi --> <!-- If using a custom LDAP provider, the fully qualified class: --> <LdapConnectorClass>com.custom.ldap.MyProvider</LdapConnectorClass> </Connection> <ConnectPool enabled="true"> <!-- enabled is optional, defaults to true --> <Timeout>30000</Timeout> <!-- optional, in milliseconds; if not set, no timeout --> <Maxsize>50</Maxsize> <!-- optional; if not set, no max connections --> <Prefsize>30</Prefsize> <!-- optional; if not set, no pref size --> <Initsize></Initsize> <!-- optional; if not set, defaults to 1 --> <Protocol></Protocol> <!-- optional; if not set, defaults to 'ssl plain' --> </ConnectPool> <Admin> <DN>cn=manager,dc=apigee,dc=com</DN> <Password>secret</Password> </Admin> </LdapResource>
curl 예: LDAP 리소스 만들기
다음 예에서는 ldap1이라는 LDAP 리소스를 만듭니다.
curl -X POST -H "Content-Type: application/xml" \ https://api.enterprise.apigee.com/v1/organizations/myorg/environments/test/ldapresources \ -u apigee_email:password -d \ '<LdapResource name="ldap1"> <Connection> <Hosts> <Host>foo.com</Host> </Hosts> <SSLEnabled>false</SSLEnabled> <Version>3</Version> <Authentication>simple</Authentication> <ConnectionProvider>unboundid</ConnectionProvider> <ServerSetType>round robin</ServerSetType> </Connection> <ConnectPool enabled="true"> <Timeout>30000</Timeout> <Maxsize>50</Maxsize> <Prefsize>30</Prefsize> <Initsize></Initsize> <Protocol></Protocol> </ConnectPool> <Admin> <DN>cn=manager,dc=apigee,dc=com</DN> <Password>secret</Password> </Admin> </LdapResource>'
응답 코드
다음은 성공 또는 실패에 대해 정책이 반환하는 HTML 응답 코드입니다.
- 성공: 200
- 실패: 401
프라이빗 클라우드용 Edge에서 커스텀 LDAP 제공업체 사용
커스텀 LDAP 제공업체
프라이빗 클라우드용 Apigee Edge에는 이미 클러스터를 사용하도록 구성된 LDAP 제공업체가 함께 제공됩니다. LDAP 정책과 상호작용할 수 있습니다. 하지만 맞춤 LDAP 제공업체를 사용하는 경우 LDAP 정책을 지원해야 합니다. 방법은 다음과 같습니다.
- LDAP 제공자 클래스에서
ExternalLdapConProvider
인터페이스를 구현합니다.public interface ExternalLdapConProvider { void doAuthentication(LdapBean LlapBean, String userDN, String password, String baseDN); void doSearchAndAuthentication(LdapBean LlapBean, String password, String baseDN, String query, int scope); Collection<Map<String, String[]>> doSearch(LdapBean LlapBean, String query, String baseDN, Collection<String> requiredAttributes, int scope); void closeConnections(); }
- 정책 구성의
<LdapConnectorClass>
(다음 섹션)에서 맞춤 LDAP 제공자의 정규화된 클래스 이름을 추가합니다. - custom-ldap.jar_.zip 파일을 다운로드합니다. 마우스 오른쪽 버튼을 클릭하고 다른 이름으로 저장을 선택해야 할 수도 있습니다.
- 압축을 풉니다.
- custom-ldap.jar 파일을 환경에 추가하고 이 파일이 클래스 경로에 있는지 확인합니다.
- LDAP 제공업체의 환경 리소스를 만듭니다. 이 실습에서는 환경 리소스를
LDAP 정책의
<LdapResource>
요소에 있는 이름.
Java용 UnboundID LDAP SDK
UnboundID LDAP SDK를 LDAP 정책과 함께 사용할 수 있지만 먼저 버전을 다운로드해야 합니다. 각 메시지 프로세서의 클래스 경로에 추가합니다.
UnboundID LDAP SDK를 LDAP 정책과 함께 사용하려면 다음 단계를 따르세요.
- 브라우저를 열고 UnboundID LDAP SDK의 Sourceforge 파일 저장소로 이동합니다.
https://sourceforge.net/projects/ldap-sdk/files/
- SDK 버전 2.3.1 (SE 또는 Standard 버전)을 찾아 ZIP 파일을 다운로드합니다. 확인할 수 있습니다 예를 들어 'unboundid-ldapsdk-2.3.1-se.zip'을 다운로드합니다.
- 다음 예와 같이 SDK ZIP 파일에서 JAR 파일을 추출합니다.
unzip -j -d ~/tmp ~/Downloads/unboundid-ldapsdk-2.3.1-se.zip unboundid-ldapsdk-2.3.1-se/unboundid-ldapsdk-se.jar
이 명령어는 JAR 파일만 ~/tmp 디렉터리에 추출합니다. 디렉터리를 삭제하고 선택사항이지만
-j
를 사용하면 됩니다. - 각 메시지 프로세서 노드에서 다음을 수행합니다.
<ph type="x-smartling-placeholder">
- </ph>
- JAR 파일을 메시지 프로세서
/opt/apigee/edge-gateway/lib/thirdparty
디렉터리에 있습니다. - 필요한 경우 메시지 프로세서가 JAR 파일에 액세스할 수 있도록 Apigee 사용자에게 JAR 파일에 대한 권한을 부여합니다.
- 메시지 프로세서를 다시 시작합니다.
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Edge는
/opt/apigee/edge-gateway/lib/thirdparty
디렉터리를 클래스 경로에 추가합니다. - JAR 파일을 메시지 프로세서
흐름 변수
다음은 SearchQuery
로 채워진 LDAP 정책 변수입니다.
변수 |
설명 |
---|---|
ldap.policyName.execution.success |
정책이 실행되면 이 흐름 변수에 'true' 값이 포함됩니다. '거짓'입니다. 자동으로 달라질 수 있습니다 |
ldap.policyName.search.result[index]. attribute.attrName[index]=value |
이 변수의 유연한 형식인 여러 개의 속성이 있을 때, 여러 개의 속성이 있는 값으로 사용됩니다. 색인은 1부터 시작하는 숫자입니다. 색인 번호를 입력하지 않으면 기본값이 색인 번호는 1입니다. 정책이 주소, 전화번호, 이메일을 반환하면 첫 번째 속성을 가져올 수 있습니다. 다음 변수를 사용하여 값을 구하세요. ldap.policyName.search.result.attribute.address ldap.policyName.search.result.attribute.phone ldap.policyName.search.result.attribute.email 검색 결과에서 세 번째 주소 속성을 검색하려면 다음을 사용합니다. ldap.policyName.search.result[3].attribute.address 속성에 여러 값이 있는 경우 (예: 사용자에게 여러 개의 이메일이 있는 경우) 주소) 결과에서 다음과 같이 두 번째 이메일 주소를 검색합니다. ldap.policyName.search.result.attribute.mail[2] |
오류 코드
Edge 정책에서 반환된 오류는 오류 코드 참조에 설명된 대로 일관된 형식을 따릅니다.
이 정책은 다음 오류 코드를 사용합니다.
오류 코드 | 메시지 |
---|---|
InvalidAttributeName |
Invalid attribute name {0}. |
InvalidSearchBase |
Search base can not be empty. |
InvalidValueForPassword |
Invalid value for password field. It can not be empty. |
InvalidSearchScope |
Invalid scope {0}. Allowed scopes are {1}. |
InvalidUserCredentials |
Invalid user credentials. |
InvalidExternalLdapReference |
Invalid external ldap reference {0}. |
LdapResourceNotFound |
Ldap resource {0} not found. |
BaseDNRequired |
Base DN required. |
OnlyReferenceOrValueIsAllowed |
Only value or reference is allowed for {0}. |
AttributesRequired |
At least one attribute required for search action. |
UserNameIsNull |
User name is null. |
SearchQueryAndUserNameCannotBePresent |
Both search query and username can not be present in the authentication action.
Please specify either one of them. |