2013-08-05 1 views
1

사용자 (예 : 페이 스북, 트위터, 창 등)를 인증하는 여러 가지 방법을 허용하는 웹 사이트가 있습니다.이 각각은 사용자가 로그인 할 때 다른 ID 이름을 제공합니다. 나는 신원을 제공 한 사람 (ClaimsIdentity)을 찾아서 그에 따라 사용자의 클레임 세트에 특정 애플리케이션 클레임을 추가 할 고유 ID를 선택해야합니다. 모든 엔티티를 사용자 기본 프로필 테이블과 연결하는 테이블을 만들었습니다. 이 테이블에는 ID 공급자의 이름, ID 공급자가 제공 한 고유 ID 및 프로필 테이블의 고유 사용자 ID가 포함됩니다.Windows Identity Foundation에서 현재 ID 공급자 찾기

제 질문은 사용자가 로그인을 사용하여 내 사이트에 로그인 할 때 ID 제공 업체의 이름을 어떻게 찾을 수 있습니까? 문제는 사용자가 facebook과 twitter 모두에 사용되는 이메일 주소가 같을 때 인증 관리자의 인증 메소드에서 사용되는 들어오는 사용자의 정보를 찾을 수 없다는 것입니다.

답변

3

당신은 일반적으로 당신이 얻는 클레임마다 IssuerOriginalIssuer 속성을 사용합니다.

당신은 고유 식별자로 e-mail를 사용하는 경우 :

var u = this.User as IClaimsPrincipal; 

var c = (u.Identity as IClaimsIdentity) 
          .Claims 
          .First(c => c.ClaimType == ClaimTypes.Email); 

var issuer = c.Issuer; 
var originalIssuer = c.OriginalIssuer; 
+0

감사 에우 제 니오. 나는 다른 곳에서 논평에서 비슷한 질문을했다. 이것도 그 대답이다. – Hemant