문제

우리의 고객은 응용 프로그램을 개발하기 위해 우리에게 다가 갔으며 평소와 같이 매일 범위가 커집니다.

처음에는 회사 네트워크 내에서 한정된 전용 앱으로 시작했습니다. 사용자 인증은 사용자의 Windows 로그인을 Aquiring하고 SQLServer 데이터베이스를 사용하여 액세스 권한을 호스팅하여 설정했습니다. 모두 아주 간단합니다.

그들은 이제 다음을 원합니다.
- 웹 기반으로 응용 프로그램
- 기업 네트워크 외부에서 호스팅 할 애플리케이션
- 동일한 방식으로 작동하려는 사용자 인증 (비밀번호 사용 없음, Windows 로그인 만 사용하지 않음)

더욱 복잡하게하기 위해, 이들은 응용 프로그램의 다양한 기능이 HTTP 요청의 화재로 인한 다른 응용 프로그램에 의해 사용할 수 있기를 원합니다.
- 사용자는 회사 네트워크에 로그인합니다
- 사용자는 회사 응용 프로그램을 시작합니다
- 사용자 세부 사항을 처리합니다
- 사용자는 버튼을 클릭합니다
- 회사 응용 프로그램이 호스팅 된 웹 앱에 HTTP 요청을 해고합니다.
-HTTP 요청에는 필요한 인증 및 고객 세부 정보가 포함되었습니다
- 사용자 인증이 '자동으로'완료되었습니다 (인간 참여 없음)
- 고객 데이터가 안전하게 전송됩니다

그들은 우리의 초기 접근 방식이 그들이 원하는 것이 매우 많았 기 때문에 우리가 그들을 위해 이것을하는 데 매우 열심입니다. 그들은 그러한 호스팅 된 웹 앱이 우리의 특수성이 아니더라도 여전히 우리가 이것을하기를 원합니다. 그래서 나는 이제 전문가들에게 다가갑니다.
- 누구나 접근하는 방법에 대한 조언이 있습니까?
- 피할 수있는 함정에 대한 경고가 있습니까?

도움이 되었습니까?

해결책

기본적으로 그들은 연합 액세스에 대해 이야기하고 있습니다. 네트워크 내부에서 인증 지점을 호스팅하여 응용 프로그램에 대한 토큰을 전달하여이를 구문 분석하고 액세스 할 수 있습니다. 이것은 꽤 표준이며 MS는 이에 대한 좋은 기반을 제공합니다. 제네바 프레임 워크. 또한 WSFED를 프로토콜로 사용하도록 애플리케이션을 변경하고 인증 토큰을 조용히 발행하는 보안 토큰 서비스와 대화 할 수있는 웹 서비스 호출에도 효과가 있습니다. 대부분의 경우 이것을 위해 SAML을 사용하게됩니다. 또한 회사 네트워크를 벗어나지 않는 인증 세부 사항의 추가 보너스가 있습니다.

인증서 기반 인증의 제안은 흥미로운 것이지만 PKI 인프라를 출시하는 데 더 많은 작업이 필요합니다. 비용이 많이들 수 있습니다.

Cardspace는 작동하지 않습니다. 원하는 것처럼 침묵하지 않습니다. OpenID는 비 초보자이며 침묵하지 않습니다.

Azure를보고 있다면 추가 포인트 - Azure의 인증 비트는 후드 아래에서 Saml/Wsfed를 사용하며 제네바의 비트가 있습니다. 따라서 클라우드로 이동 한 경우 각 고객은 네트워크 내에서 로그인 페이지를 구성해야합니다. 인증 토큰을 귀하에게 발행하고 규칙에 따라 구문 분석하는 페이지를 신뢰하는 것입니다.

다른 팁

인증서 기반 인증과 WCF 커뮤니케이션, 즉 회사가 서비스를 사용하는 외부 사용자에게 유효한 인증서를 제공 할 수 있습니다. 그러면 사용자 이름 비밀번호가 필요하지 않지만 사용자를 바로 사용하십시오.

이미 살펴 보셨나요? SAML?

체크 아웃 Windows Cardspace Windows 로그인과 통합되며 필요한 SSO 시나리오를 허용하므로 필요한 SSO 시나리오가 가능합니다.

앱 구성 방식에 따라 web.config의 MachineKey와 함께 바이올린을 사용하여 SSO (Single-Sign-on)로 Ajax 호출을 허용 할 수 있습니다. 여기에는 회사 네트워크 내에 작은 ASP.NET 앱이 포함되어있어 인증 토큰을 해제하고 호스팅 된 앱으로 리디렉션됩니다.

두 앱이 동일한 MachineKey를 공유하면 ASP.NET 인증 시스템을 통해 사용자가 호스팅 된 앱으로 행복하게 허용합니다.

이 접근법에는 다음과 같은 문제가 있습니다.

  • 시스템에 다른 종속성을 소개합니다 (회사 네트워크 내 인증 앱) 간단한 앱이지만 액세스 할 수없는 경우 문제를 진단하려고 할 때 문제가 발생합니다.
  • 인증 앱과 동일한 도메인에서 호스팅 된 서비스가 필요합니다 (따라서 HTTP 쿠키의 인증 티켓이 전달됩니다.)
  • 또한 정보를 보호하기 위해 호스팅 된 서비스에는 SSL 인증서가 필요합니다. (실제로 단점이 아니라 어쨌든이 일을하고 싶을 것입니다.)
  • 귀하와 고객에게 공유 MachineKey가 있으므로 앱 인스턴스를 해당 특정 클라이언트에 묶을 것입니다.

이를 위해 개인 OpenID 제공 업체/서버를 사용합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top