2011-02-22 3 views
1

웹 응용 프로그램의 사용자를 인증하는 사용자 지정 STS가 있다고 가정 해 보겠습니다. 이 STS에는 사용자 ID, 이름 및 전자 메일 주소와 같은 데이터도 있습니다. 다음 상황이 발생했습니다.클레임 기반 ID -> 사용자 데이터 동기화

STS를 사용하는 응용 프로그램이 있습니다. 이 응용 프로그램에서 사용자는 레코드를 만들 수 있으며 속성 중 하나가 사용자 ID로 채워진 '작성자'가됩니다. 사람들이이 레코드를 검색하면 사용자 ID가 아닌 실제 이름을 보여주고 싶습니다. 그래서 어떻게 든 사용자 ID와 실제 이름과의 관계를 유지해야합니다.

문제점 : 응용 프로그램의 데이터베이스에 사용자 ID 만 있지만 특정 사용자 세부 정보를 표시하려고합니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 내 STS에 메서드를 추가하는 방법에 대해 생각해 보았습니다. 추가 사용자 데이터를 쿼리 해 보겠습니다.하지만 매우 느립니다. 화면에 50 개의 레코드가 서로 다른 사용자 ID를 표시해야하는 경우 필요합니다. 다른 해결책은 내 앱에 사용자 데이터로 테이블을 유지하는 것입니다. 내 사용자가 처음으로 '사용자'를 사용할 때이 테이블에 사용자가 추가됩니다. 하지만 언제 어떻게이 테이블을 동기화합니까?

저는 솔루션 2를 선호하고 매일 밤 데이터를 동기화한다고 생각합니다.

너희들은 어떻게 생각하니?

답변

2

데이터베이스의 스키마를 수정할 수 있습니까?

가능한 경우 STS에서 이름 및 기타 사용자 속성 정보를 얻은 다음 사용자 측 또는 어쩌면 사용자 데이터베이스 또는 관련 레코드에 저장할 수 있습니다. 이것을 쿼리 및 표시 전용 "참조"데이터로 간주하고 편집을 허용하지 않습니다.

사용자가 인증 할 때마다 (그리고 이러한 모든 클레임을 토큰으로 표시 할 때마다) 데이터베이스의 정보를 간단히 업데이트 할 수 있습니다. 이 작업을 수행하려면 사용자에게 영구적이고 신뢰할 수있는 핸들로 사용할 수있는 좋은 고유 ID (userid?)가 필요합니다.

+0

감사합니다. 좋은 점은 애플리케이션 데이터베이스에 '읽기 전용'사용자 테이블을 만드는 훌륭한 해결책이라는 것입니다. 인증 이벤트에서이 테이블을 업데이트하면 대부분의 시간 동안 괜찮아 보입니다. 우리는 사용자가 ('독자'또는 다른 것으로서) 참조되는 몇 가지 상황을 생각해 낼 수 있다고 생각하지만, 시스템에 로그인하지는 못합니다.하지만이를 위해 뭔가를 할 것입니다. – Thomas

+0

plase가 조언을 제공합니다. 소유권 주장 또는 클레임 ​​조합을 고유 영구 사용자 ID로 사용할 수 있습니까? –

+0

"사용자 ID"가 충분하지 않습니까? 사람들은 종종 전자 메일도 사용합니다. 일부 IdP는 일종의 이름 식별자 (예 : LiveID, Google 등)를 제공합니다. –

관련 문제