2012-04-03 2 views
5

두 개의 서로 다른 시스템 사이에서 싱글 사인온 (single sign-on) 옵션을 조사하고 있습니다. 하나는 .NET, 하나는 Java EE입니다. 이들은 각각 독립적으로 관리되며 일부 사용자가 겹쳐서 별도의 사용자 관리 권한을가집니다.크로스 플랫폼 SSO - 어디서부터 시작해야합니까?

암호를 다시 묻지 않고 하나에서 다른 것으로 연결할 수 있기를 바랍니다.

SSO 제품 및 프로토콜에 대한 많은 옵션이있는 것처럼 보입니다. 나는 자신의 보안 토큰을 생성하고 검증하기 위해 일회성을 코딩 할 수 있지만 휠을 다시 발명하지 않는 것을 선호한다고 확신한다.

접근 방식 및/또는 제품 측면에서 (무엇보다 오픈 소스가 좋습니까?) 권장 할만한 점은 무엇입니까?

먼저 SAML, OpenID, OAuth 중 하나를 지원합니까?

두 번째로 Free/Open Source 제품 중 OpenAM, Shibboleth, JOSSO 및 CAS를 알고 있습니다. 좋은, 나쁜 또는 못생긴 어떤 경험을 공유 할 수 있습니까?

답변

9

첫째 프로토콜 볼 수 있습니다 :

  1. SAML 2.0 중앙 집중식/분산 SSO 프로토콜입니다. 가장 많은 프로토콜은 이며 고급 프로토콜이며 연계를 제공합니다. 즉 사용자가 X 시스템 중 하나를 사용하여 에 로그인하거나 모든 사용자에게 단일 시스템 (IDP라고 함)을 통해 채널하도록 허용 할 수 있습니다. SAML 2.0은 금융 및 정부 부문에서 주요 호스팅 된 애플리케이션 (예 : Google 앱 및 Saleforce)과 함께 널리 사용됩니다. 또한 가장 복잡한 프로토콜

  2. 오픈 ID가 분산 된 프로토콜 및 인터넷에 가장 적합, 하지 인트라넷/엑스트라 넷 애플리케이션입니다. 사용자는 OpenId 제공 업체에서 로그인하도록 선택할 수 있습니다. Stackoverflow는 OpenId의 좋은 예입니다. 은 Google 또는 Facebook 계정을 사용하여 로그인 할 수 있습니다. 은 소모 응용 프로그램 (Relying 파티로 알려져 있음)과 SSO 시스템 (서비스 공급자라고 함)간에 기본값 인 을 강제로 적용하여 중앙 집중식으로 OpenId를 구현할 수 있습니다.

  3. OAuth은 실제로 SSO 프로토콜이 아닙니다. 사용자가 응용 프로그램 A에 응용 프로그램 B에 자신의 정보에 대한 액세스 권한을 부여 할 수 있습니다. 응용 프로그램 B에 대한 자격 증명을 응용 프로그램 A에 제공합니다. 일부 사람들은 OAuth를 의사 인증 양식으로 사용했습니다. 즉, 시스템이 사진에 액세스 할 수있는 경우 사용자 X에 속하는 경우 사용자는 X이어야합니다. 해킹이며 권장되지 않습니다.

확실히에 잠금을 방지하기 위해 표준화 된 프로토콜로 이동하는 것이 좋습니다. 마이크로 소프트는 SAML 2.0에 대한 지원을 소개 최근에하고 자바 사용할 수 많은 오픈 소스와 상용 제품이있다. Java 용으로 OpenId 구현을 사용할 수 있지만 .NET 세계에 대해 충분히 설명하지는 못합니다.

언급 한대로 다양한 오픈 소스 SAML 제품 (OpenAM, Shibboleth, JOSSO 및 CAS)을 사용할 수 있습니다.한 가지 유의해야 할 사항 - SAML은 복잡한 프로토콜이므로 오픈 소스 경로를 따라 가면 많은 노력이 필요합니다. 우리가 Cloudseal SSO 플랫폼 (SAML 2.0 기반)을 만들었을 때 우리는 복잡성을 추상화하는 작업을 단순화하려고 많은 시간을 보냈습니다. 다른 상용 업체도 똑같이 해왔지만, 언급 한 오픈 소스 제품은 단순성보다는 기능성에 초점을 맞추고 있습니다. - IMHO! :)

관련 문제