2013-09-06 5 views
2

Windows Azure Access Control을 사용하여 내 앱에서 사용자 이름/비밀번호를 사용할 때의 보안 위험을 피하고 인증을 간소화하려고합니다. 그러나이 사이트는 사용자를 "사전 인증"하고자 할 수있는 중간 규모 또는 대규모 회사에서 사용할 수있는 사이트입니다. 즉, 사용자가 Azure ACS를 통해 로그인하기 전에 사용자의 Windows Live ID를 입력하고 계정을 자동 생성하여 사용자를 대량으로 만들 수 있습니다. 해당 사용자에게 일회성 페이지로 연결되는 링크가 포함 된 이메일을 보내 계정을 만들 수 있지만이 작업을 좀 더 원활하게 수행하기를 기대합니다.Windows Azure Access Control을 사용하여 다른 사용자를 "사전 인증"하는 방법은 무엇입니까?

내가하려는 것은 Team Foundation Service (* .visualstudio.com)를 사용하여 Windows Live ID를 입력하는 것만으로 팀 프로젝트에 사용자를 추가하는 방법과 동일하며 로그인하면 로그인 할 수 있습니다 이전에 TFS에 로그인 한 적이 없더라도 프로젝트에 액세스 할 수 있습니다.

내가 이해가 가지 않는 것은 ACS 및 System.IdentityModel을 사용하여이를 수행하는 방법입니다. nameidentifier 클레임을 사용하여 사용자를 고유하게 식별 할 수 있지만 특정 제공자를 통해 다른 사용자의 이름 식별자를 얻으려면 어떻게해야합니까?

잘 설명하지 못해 죄송합니다. 언제든지 질문 할 수 있습니다.

답변

2

정말 답이 아니라 문제에 대한 내 생각을 나누고 싶었습니다.

ACS 및 Windows Live 인증의 문제는 ACS가 결코 사용자의 전자 메일 주소를 반환하지 않는다는 것입니다. 우리가 ACS에서 되돌려받는 것은 사용자가 인증되었다는 것을 말해주는 토큰입니다. 이 토큰은 ACS 영역을 기반으로 생성됩니다 (예 : ACS 영역을 변경하면 동일한 사용자에 대해 ACS가 새 토큰을 만듭니다). 다시 말하지만 응용 프로그램을 사용하는 회사의 관리자는 사용자의 이메일 주소를 입력 할 수 있지만 ACS에서 해당 이메일 주소를 다시받을 수있는 방법은 없습니다.

그냥 큰 소리로 :)을 생각 몇 가지를 거기 당신은 할 수 :

  1. 을 당신은 사용자를 인증 ACS를 사용하고 사용자가 사용에 대한 자세한 정보를 얻을 수 윈도우 라이브 REST API를 사용 ACS가 보낸 토큰. Windows Live REST API를 사용하면 사용자에 대한 이름, 전자 메일 주소 등과 같은 세부 정보를 얻을 수 있습니다. 또는 Windows Live API를 사용하여 사용자를 인증 할 수도 있습니다. 100 % 확신 할 수는 없지만 이것이 Team Foundation Service가하는 것이라고 생각합니다. http://zud.io을 살펴보십시오. 즉 Windows Live API를 사용합니다.
  2. 또 다른 아이디어는 일종의 초대 토큰을 만드는 것입니다. 이 접근법에서 관리자는 사람들을 "초대"합니다. 그들은 사용자의 이름, 전자 메일 주소를 제공함으로써 초대 기록을 작성하고 응용 프로그램은 고유 한 초대 토큰을 작성합니다. 그런 다음 응용 프로그램은 사용자가 응용 프로그램에 와서 자신을 인증하는 데 사용하는 초대 링크를 작성할 수 있습니다. 인증이 완료되면 초대 레코드를 검색하여 데이터베이스에서 사용자 정보를 검색하고 사용자 레코드를 작성하고 인증 토큰을 사용자 레코드와 연관시킬 수 있습니다. 이 방법의 문제점은 사용자가 관리자가 제공 한 것과 동일한 라이브 ID를 사용할 수 없다는 것입니다. 예를 들어 최소 3 개의 실제 ID가 있고 초대 링크가있는 경우 해당 라이브 ID로 서명 할 수 있으며 응용 프로그램에서 등록을 중단 할 수 없습니다.
  3. 또 다른 아이디어는 ACS 대신 Windows Azure Active Directory (WAAD)를 사용하는 것입니다. 응용 프로그램에서 Graph API를 사용하여 클라이언트에 대한 새로운 사용자를 생성 할 수 있습니다. WAAD에 의해 수행되는 것과 같이 여전히 사용자 이름과 암호를 관리하지는 않습니다. 내가 생각할 수있는 두 가지 문제는 다음과 같습니다. a) 최종 사용자 인 경우 하나 이상의 사용자 이름/암호 조합을 기억해야합니다. b) 로그인 할 때 [email protected]에 내 자격 증명을 제공해야합니다. 개인적으로 큰 번거 로움.

우리 역시 동일한 고통을 겪어 왔고 현재 우리는 접근 # 2로 가기로 결정했습니다.

희망이 도움이됩니다.

+1

고맙습니다! 그게 제가 찾고있는 정보입니다. # 2 접근 방식이 가장 좋은 방법이라고 생각합니다. 나는 누군가 다른 사람으로부터 나의 영역에 대한 다른 사용자의 nameidentifier에 대한 ACS를 "질의 할"수 없다는 확인을 원했습니다. 아무도 이것이 가능하다는 것을 알고 있다면, 그것은 확실히 문제를 해결할 것이지만, 나는 그것을 할 수있는 어떤 API도 보지 못한다. 도와 주셔서 감사합니다! – Paul