Partager via


SharePoint 2010에서 사용자 지정 클레임 공급자를 사용하기 위한 환영 전자 메일 받기

최초 문서 게시일: 2012년 5월 3일 목요일

제 블로그 친구 중 한 명인 Israel V.는 최근, 사용자 지정 클레임 공급자용으로 제공되는 모든 코드 예제에 결함이 한 가지 포함되어 있음을 지적했습니다. 이러한 예제를 따르는 경우, 사이트에 새 사용자를 추가할 때 발송되어야 하는 환영 전자 메일이 발송되지 않는다는 것입니다. 먼저 사용자 여러분께 사과 말씀부터 드리겠습니다. 이 게시물에서는 해당 상황을 자세히 확인하고 Israel이 개발한 코드를 간단하게 검토한 결과 확인된 이 문제에 대한 해결 방법에 대해 설명합니다.

간단하게 요약하자면, 이 문제는 사용자를 사이트 모음에 처음으로 추가할 때 발생합니다. 프로필 동기화가 아직 수행되지 않았으므로 해당 사용자에 연결된 전자 메일 주소가 없기 때문입니다. 짐작하신 분들도 계시겠지만(가장 간단한 사례 시나리오를 통해 설명하겠습니다), 이 문제를 해결하려면 사용자를 추가할 때 해당 사용자의 전자 메일 주소를 가져와서 PickerEntity 클래스의 해당 속성에 삽입하면 됩니다. 아래에서 자세한 방법에 대해 설명하겠습니다.

전자 메일 주소를 가져오는 위치는 클레임 공급자에 따라 달라집니다. Active Directory에서 데이터를 가져오는 경우 AD를 쿼리하여 전자 메일 주소를 가져올 수 있습니다. SAML을 사용하는 경우에는 전자 메일 주소가 ID 클레임이므로 클레임을 다시 사용하면 됩니다. 이처럼 전자 메일 주소를 가져오는 위치는 상황에 따라 다르므로 적절한 호출을 수행해야 합니다.

전자 메일 주소를 사용하는 시기는 FillResolve 메서드를 호출할 때입니다. 아시다시피 이 메서드는 사용자 선택을 통해 항목을 추가한 후 또는 입력 컨트롤에서 값을 입력하고 확인 단추를 클릭할 때 호출할 수 있습니다. 여러 코드 예제에서 보여 드린 바와 같이, 이 프로세스를 수행하는 중에 메서드로 전달되는 List<PickerEntity>에 추가할 PickerEntity 클래스의 인스턴스를 만듭니다.

전자 메일 주소를 추가하는 방법은 다음과 같이 PickerEntity 인스턴스에서 속성을 설정하는 것입니다.

//needed to make welcome emails work:

pe.EntityData[PeopleEditorEntityDataKeys.Email] = "steve@stevepeschka.com";

이 예제에서 "pe"는 작성하여 FillResolve 메서드로 반환하는 PickerEntity 클래스의 인스턴스입니다.

간단하죠? 이 과정에서 가장 까다로운 작업은 전자 메일 주소 값을 가져오는 것입니다. 가져온 주소는 간단하게 PickerEntity에 추가할 수 있으며, 그러면 환영 전자 메일이 작동합니다. 제가 테스트해 본 결과 a) 원래 사용자 지정 공급자에서는 환영 전자 메일이 발송되지 않았는데 b) 이 변경 내용을 적용한 후에는 환영 전자 메일이 발송됨을 확인할 수 있었습니다. 이 문제를 제기하고 코드 예제를 제공해 준 Israel V.에게 다시 한 번 감사의 인사를 전합니다.

이 문서는 번역된 블로그 게시물입니다. 원본 문서는 Getting Welcome Emails to Work with a Custom Claims Provider in SharePoint 2010을 참조하십시오.