LDAP 특성을 클레임으로 보내기 규칙을 사용하는 경우
특성 저장소에 존재하는 실제 LDAP(Lightweight Directory Access Protocol) 특성 값이 포함된 나가는 클레임을 발급한 다음 클레임 형식을 각 LDAP 특성과 연결하려는 경우 이 규칙을 AD FS(Active Directory Federation Services)에서 사용할 수 있습니다. 특성 저장소에 대한 자세한 내용은 특성 저장소의 역할을 참조하세요.
이 규칙을 사용하는 경우 다음 표에 설명된 대로 지정하는 각 LDAP 특성에 대해 규칙 논리와 일치하는 클레임을 발급합니다.
규칙 옵션 | 규칙 논리 |
---|---|
LDAP 특성을 나가는 클레임 유형에 매핑 | 특성 저장소가 지정한 특성 저장소와 같고 LDAP 특성이 지정한 값과 같은 경우 LDAP 특성 값을 지정한 나가는 클레임 유형에 매핑하고 클레임을 발급합니다. |
다음 섹션에서는 클레임 규칙에 대한 기본 사항을 소개합니다. 또한 LDAP 특성을 클레임으로 보내기 규칙을 사용하는 경우에 대해 자세하게 설명합니다.
클레임 규칙 정보
클레임 규칙은 들어오는 클레임에 대해 조건(if x then y)을 적용하고 조건 매개 변수를 기반으로 나가는 클레임을 생성하는 비즈니스 논리의 인스턴스를 나타냅니다. 다음 목록은 이 항목을 더 읽기 전에 클레임 규칙에 대해 알아야 하는 중요한 팁을 간략하게 설명합니다.
AD FS 관리 스냅인에서 클레임 규칙 템플릿을 사용해야만 클레임 규칙을 만들 수 있습니다.
클레임 규칙은 클레임 공급자(예: Active Directory 또는 다른 페더레이션 서비스)에서 직접 들어오거나 클레임 공급자 트러스트에 대한 수락 변환 규칙 출력에서 들어오는 클레임을 처리합니다.
클레임 규칙은 지정된 규칙 집합 내의 시간 순서대로 클레임 발급 엔진에 의해 처리됩니다. 규칙에 우선 순위를 설정하여 지정된 규칙 집합 내의 이전 규칙에 의해 생성된 클레임을 더욱 구체화하거나 필터링할 수 있습니다.
클레임 규칙 템플릿에서는 항상 들어오는 클레임 유형을 지정해야 합니다. 그러나 단일 규칙을 사용하여 동일한 클레임 유형 내의 여러 클레임 값을 처리할 수 있습니다.
클레임 규칙 및 클레임 규칙 집합에 대 한 정보를 자세한 참조 규칙의 역할 클레임합니다. 규칙은 처리 하는 방법에 대 한 자세한 내용은 참조 클레임 엔진의 역할합니다. 자세한 내용은 클레임 규칙 집합을 처리 하는 방법을 참조 하십시오 클레임 파이프라인의 역할합니다.
LDAP 특성을 나가는 클레임 유형에 매핑
LDAP 특성을 클레임으로 보내기 규칙 템플릿을 사용하는 경우 Active Directory 또는 AD DS(Active Directory 도메인 서비스) 같은 LDAP 특성 저장소의 특성을 선택하여 해당 값을 신뢰 당사자에 대한 클레임으로 보낼 수 있습니다. 그러면 정의하는 특정 저장소의 특정 LDAP 특성을 권한 부여에 대해 사용할 수 있는 나가는 클레임 집합에 기본적으로 매핑합니다.
이 템플릿을 사용하면 단일 규칙에서 여러 클레임으로 보내는 여러 특성을 추가할 수 있습니다. 예를 들어 이 규칙 템플릿을 사용하여 company 및 department Active Directory 특성에서 인증된 사용자에 대한 특성 값을 조회하는 규칙을 만든 다음 두 개의 서로 다른 나가는 클레임으로 이 규칙을 보냅니다.
또한 이 규칙을 사용하여 모든 사용자 그룹 구성원 자격을 보낼 수도 있습니다. 개별 그룹 구성원만 보내려는 경우 그룹 구성원을 클레임으로 보내기 규칙 템플릿을 사용합니다. 자세한 내용은 When to Use a Send Group Membership as a Claim Rule를 참조하세요.
이 규칙을 만드는 방법
AD FS 관리 스냅인에서 LDAP 특성을 클레임으로 보내기 규칙 템플릿을 사용하거나 클레임 규칙 언어를 사용하면 이 규칙을 만들 수 있습니다. 이 규칙 템플릿은 다음과 같은 구성 옵션을 제공합니다.
클레임 규칙 이름 지정
LDAP 특성을 추출할 특성 저장소를 선택합니다.
LDAP 특성을 나가는 클레임 유형에 매핑
이 규칙을 만드는 방법에 대한 자세한 내용은 LDAP 특성을 클레임으로 보내는 규칙 만들기를 참조하세요.
클레임 규칙 언어 사용
Active Directory, AD DS 또는 AD LDS(Active Directory Lightweight Directory Services)에 대한 쿼리를 samAccountname이 아닌 LDAP 특성에 대해 비교해야 하는 경우 사용자 지정 규칙을 대신 사용해야 합니다. 입력 집합에 Windows 계정 이름 클레임이 없는 경우 사용자 지정 규칙을 사용하여 AD DS 또는 AD LDS를 쿼리하기 위해 사용할 클레임을 지정해야 합니다.
다음 예를 통해 클레임 규칙 언어를 통해 사용자 지정 규칙을 구성하여 특성 저장소에서 데이터를 쿼리하고 추출할 수 있는 다양한 방식 중 몇 가지를 이해할 수 있습니다.
예: AD LDS 특성 저장소를 쿼리하고 지정한 값을 반환하는 방법
매개 변수는 세미콜론으로 구분되어야 합니다. 첫 번째 매개 변수는 LDAP 필터입니다. 후속 매개 변수는 일치하는 개체에서 반환할 특성입니다.
다음 예제는 sAMAccountName 특성으로 사용자를 조회하고 사용자의 mail 특성 값을 사용하여 이메일 주소 클레임을 발급하는 방법을 보여 줍니다.
c:[Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]
=> issue(store = "AD LDS", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"), query = "sAMAccountName={0};mail", param = regexreplace(c.Value, "(?<domain>[^\\]+)\\(?<user>.+)", "${user}"));
다음 예제는 mail 특성으로 사용자를 조회하고 사용자의 title 및 displayname 특성 값을 사용하여 제목 및 표시 이름 클레임을 발급하는 방법을 보여 줍니다.
c:[Type == " http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress ", Issuer == "AD AUTHORITY"]
=> issue(store = "AD LDS ", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/title","http://schemas.xmlsoap.org/ws/2005/05/identity/claims/displayname"), query = "mail={0};title;displayname", param = c.Value);
다음 예제는 메일 및 제목으로 사용자를 조회하고 사용자의 displayname 특성을 사용하여 표시 이름 클레임을 발급하는 방법을 보여 줍니다.
c1:[Type == " http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"] && c2:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/title"]
=> issue(store = "AD LDS ", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/displayname"), query = "(&(mail={0})(title={1}));displayname", param = c1.Value, param = c2.Value);
예: Active Directory 특성 저장소를 쿼리하고 지정한 값을 반환하는 방법
Active Directory 특성 저장소가 올바른 도메인을 쿼리할 수 있도록 Active Directory 쿼리는 마지막 매개 변수로 도메인 이름을 포함한 사용자의 이름을 포함해야 합니다. 그렇지 않은 경우 동일한 구문이 지원됩니다.
다음 예는 도메인에서 sAMAccountName 특성으로 사용자를 조회한 다음 mail 특성을 반환하는 방법을 보여 줍니다.
c:[Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]
=> issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"), query = "sAMAccountName={0};mail;{1}", param = regexreplace(c.Value, "(?<domain>[^\\]+)\\(?<user>.+)", "${user}"), param = c.Value);
예: 들어오는 클레임 값에 따라 Active Directory 특성 저장소를 쿼리하는 방법
c:[Type == "http://test/name"]
=> issue(store = "Enterprise AD Attribute Store",
types = ("http://test/email"),
query = ";mail;{0}",
param = c.Value)
앞의 쿼리는 다음 세 부분으로 구성됩니다.
LDAP 필터 - 쿼리의 이 부분을 지정하여 특성을 쿼리하려는 개체를 검색합니다. 유효한 LDAP 쿼리에 대한 일반 정보는 RFC 2254를 참조하세요. Active Directory 특성 저장소를 쿼리할 때 LDAP 필터를 지정하지 않는 경우 samAccountName={0} 쿼리를 가정하고 Active Directory 특성 저장소는 {0}에 대한 값을 피드할 수 있는 매개 변수를 예상합니다. 그렇지 않은 경우 쿼리에서 오류가 발생합니다. Active Directory 이외의 LDAP 특성 저장소의 경우 쿼리의 LDAP 필터 부분을 생략할 수 없습니다. 그렇지 않으면 쿼리에서 오류가 발생합니다.
특성 사양 - 쿼리의 이 두 번째 부분에서 필터링된 개체에서 원하는 특성을 지정합니다(여러 특성 값을 사용하려는 경우 쉼표로 구분). 지정하는 특성 수는 쿼리에서 정의하는 클레임 유형 수와 일치해야 합니다.
Active Directory 도메인 - 특성 저장소가 Active Directory인 경우에만 쿼리의 마지막 부분을 지정합니다(다른 (다른 특성 저장소를 쿼리할 때는 필요하지 않습니다.) 쿼리의 이 부분은 domain\name 양식에서 사용자 계정을 지정할 때 사용합니다. Active Directory 특성 저장소는 도메인 부분을 사용하여 적절한 도메인 컨트롤러를 결정하고 쿼리를 연결하고 실행하며 특성을 요청합니다.
예: Active Directory의 특성에서 관리자 메일을 추출하기 위해 두 사용자 지정 규칙을 사용하는 방법
다음 두 사용자 지정 규칙이 아래 나와 있는 순서대로 함께 사용되는 경우 사용자 계정의 manager 특성에 대해 Active Directory를 쿼리(규칙 1)한 다음 mail 특성에 대해 관리자의 사용자 계정을 쿼리(규칙 2)할 때 해당 특성을 사용합니다. 마지막으로 mail 특성이 'ManagerEmail' 클레임으로 발급됩니다. 요약하면 규칙 1이 Active Directory를 쿼리하고 쿼리 결과를 규칙 2에 전달하면 이를 통해 관리자 이메일 값을 추출합니다.
예를 들어 이러한 규칙이 실행을 마치면 corp.fabrikam.com 도메인의 사용자에 대해 관리자의 이메일 주소가 포함된 클레임이 발급됩니다.
규칙 1
c:[Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname"]
=> add(store = "Active Directory", types = ("http://schemas.xmlsoap.org/claims/ManagerDistinguishedName"), query = "sAMAccountName=
{0};mail,userPrincipalName,extensionAttribute5,manager,department,extensionAttribute2,cn;{1}", param = regexreplace(c.Value, "(?
<domain>[^\\]+)\\(?<user>.+)", "${user}"), param = c.Value);
규칙 2
c:[Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname"]
&& c1:[Type == "http://schemas.xmlsoap.org/claims/ManagerDistinguishedName"]
=> issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/claims/ManagerEmail"), query = "distinguishedName={0};mail;{1}", param = c1.Value,
param = regexreplace(c1.Value, ".*DC=(?<domain>.+),DC=corp,DC=fabrikam,DC=com", "${domain}\username"));
참고 항목
이러한 규칙은 사용자의 관리자가 사용자와 동일한 도메인(이 예제에서는 corp.fabrikam.com)에 있는 경우에만 작동합니다.