2009-08-10 5 views
2

조회했지만 대답을 찾을 수 없습니다. Title이 무엇이어야하는지 정확히 알지 못합니다. "외부에서"제안을 원합니다. 나는이 문제에 직면 할 수있는 유일한 사람이 될 것이라고 생각하지 않는다.외부 웹 사이트에서 ASP.NET "로그온"

"ASP.NET 응용 프로그램이"사용자 권한 부여가 웹 사이트에서 이미 수행 된 것을 "받아 들일 수있는 방법은 무엇입니까?

우리는 우리 자신의 ASP.NET (2.0) 응용 프로그램을 가지고 있습니다. FBA 또는 Windows 인증을 지원하며 "Windows 이외의"로그온을위한 자체 "username + password"테이블을 가지고 있습니다. 이제 우리는 고객이 일반적으로 인트라넷 + Windows 로그온을 통해 자신의 사용자를 허용하는 방법 --- 우리 웹 사이트에 우리 앱을 "내장"하고 외부 인터넷 고객이 액세스 할 수있게하는 방법을 묻습니다.

외부 고객이 일부 사용자 이름 + 비밀번호 인증을 사용하여 "회원 사이트 영역"에 로그온해야합니다. 그런 다음 그들은 우리 페이지에 "투명하게"접근하기를 원합니다. 무엇보다 최종 사용자는 어떤 사용자 이름 + 암호도 재 공급할 필요가 없습니다. 전달 된 사용자 이름을 "받아들이는"방법이 있어야합니다. 우리는 사이트가 자신의 인증 방식으로 가지고 있을지 모를 방법이 없습니다; 그들 자신의 사이트는 ASP에 쓰여질 수 있으며, 그들은 무엇이든을 바꾸기위한 거의 노력을하지 않을 것 같다.

그래서 어떻게 접근합니까? 나는 아무것도 튼튼 할 것이라는 점을 깨닫지 못한다. 고객은 그것을 기대하지 않지만, 최소한의 기대를 할 것입니다. 예를 들어, "앱에 URL을 앱에 임베드 (embed)하라"고 말하면, 처음에는 앱에서 인증받지 않고 외부 앱에 알릴 수 있습니다. URL에 암호를 설정하는 것은 거의 도움이되지 않습니다 ...이 문제를 해결하는 방법에 대한 조언이 있습니까? 아니면 "사용자가 직접 앱을 사용할 수 없도록 웹 페이지에 대한 액세스가 보안되어 있는지 확인하십시오."

희망 사항이 너무 길지 않아야합니다. 나는 그것이 불분명 한 지역이라는 것을 알고있다. 어떤 제안이라도 인정 될 것이다.

+0

제가 생각하는 것에 대한 가설을 시험해 보도록하겠습니다. 1. 웹 사이트에는 "회원 영역"이 있으며 인증을 위해 데이터베이스에 username + password 조회가 있습니다. 2. 웹 사이트에는 게시물을 허용하는 게시판 메시지 보드 (출처 포함)가 있습니다. 3. 아키텍처는 members-area (1)이 환경 변수/Session을 통해 username (+ password 일 수도 있음)을 message-board (2)에 전달한다는 것입니다. (1) 웹 사이트가되고 (2) ASP.NET 앱이되고 싶습니다. 하지만 다른 앱/세션. –

답변

0

힘들지만 ASP.NET 멤버십 프레임 워크를 활용 한 다음 자신의 멤버십 공급자를 작성하여 자신의 인증 스키마와 상호 작용하도록 제안했지만, URL로만 보안이 충분하지 않다고 추측 했으므로 점.

1

경고 : : 이것은 아마도 말할 필요도 없지만이 작업을 오랫동안 열심히 생각해야합니다. 제공된 매개 변수를 사용하면 파고 들기에 충분히 흥미로운 사람까지 전체 시스템을 열 수있는 위험을 감수해야합니다. 데이터의 본질이 얼마나 민감한 지 확신 할 수 없지만 한 번의 위반과 분노한 고객이있을 때 많은 뜨거운 물 속에있을 수 있습니다.

고객이 끝까지 많은 작업을 수행하지 않으면 옵션이 제한 될 수 있습니다.

매우 저렴한 가격으로 사이트의 페이지에 연결하여 쿼리 문자열에 siteId 및 username 등을 전달할 수 있도록 요청할 수 있습니다. 그러면 아마도 적어도 추천 URL (www.yourcustomersite.com)은 귀하가 끝내는 어떤 테이블에 보관할 siteId와 일치합니다.

리디렉터가 스푸핑 될 수 있으므로 매우 간단한 해결책은 아니지만 아무것도하지 않는 것이 좋습니다.

고객이 약간의 작업을 할 수있게하려면 최소한 각 사용자마다 고유 한 인증 토큰을 제공하고 사용자 이름 대신 토큰을 보내야합니다. 너 그렇게 할 수 있니?siteId = yourCustomer & 사용자 이름 대신 authToken = DKDlas29df9aa01sk.

다시 한번 말하지만, 그다지 좋지는 않지만 적어도 무차별 공격은 조금 더 힘들게 만듭니다.

희망이 도움이됩니다. 행운을 빕니다!

+0

나는 100 % 명확하지 않을지도 모른다 : 우리의 웹 사이트는 * 관련이 없다 *. 고객이 자사의 웹 사이트에서 실행되는 ASP.NET 앱을 구입 했으므로 링크 할 기회가 없습니다. 어떤 솔루션을 사용하려면 웹 앱을 변경하여 (일부러) 일부 사용자가 이미 시스템에서 승인을 받았다고 받아 들여야합니다. 우리가 디코딩 할 수있는 토큰을 생성하는 방법을 잘 모름. –

1

티켓팅을 고려해 보셨습니까? 웹 서비스를 구현하고 웹 앱에 로그인하는 사용자에게 티켓을 발급하는 데 관심이 있습니다. 그런 다음 사용자가 웹 응용 프로그램을 방문하면 티켓을 확인할 수 있습니다 (실제로 웹 서비스를 사용하여 유효성을 검사 함) ... 클라이언트의 브라우저가 티켓을 저장하는 방법에 작은 문제가 있습니다 ...

반면에 , OpenID를 사용하는 사용자의 stackoverflow 로그를 볼 수 있습니다 ... (사용자가 자격 증명을 두 번 입력해야하지만 같은 계정을 사용하게됩니다).

+0

그들은 그렇게하고 싶지 않을 것 같습니다. 나는 100 % 명확하지 않았을 수 있습니다. 저희 웹 사이트는 아무런 관련이 없습니다 *. 고객이 자사의 웹 사이트에서 실행되는 ASP.NET 앱을 구입 했으므로 링크 할 기회가 없습니다. 어떤 솔루션을 사용하려면 웹 앱을 변경하여 (일부러) 일부 사용자가 이미 시스템에서 승인을 받았다고 받아 들여야합니다. –

0

먼저 this blog post을 확인하십시오. ASP.net 웹 응용 프로그램의 Single Sign On에 대한 포괄적 인 안내서입니다.

다른 도메인의 사이트에 대해 제시된 솔루션과 관련하여 (완전히 다른 도메인에있는 경우 인증 쿠키를 공유 할 수 없음) 심각한 보안 문제가 있다고 생각합니다. 우리는 SSO가있는 웹 사이트에서 Andrei 제안과 비슷한 것을했습니다. 사용자가 기본 사이트에 로그인 한 다음 보조 사이트를 방문하려고 할 때 사이트에 대한 링크는 티켓을 보유합니다 (우리는 임의의 Guid를 사용했습니다). 기본 사이트는 Guid 및 생성 시간 (티켓 만기)과 관련된 데이터베이스 세션 정보를 저장합니다. 보조 사이트가 새로운 무절제 사용자를 감지하고 웹 서비스를 통해 주 사이트에 접속 한 티켓을 발견하면 보조 사이트는 티켓을 검사하여 저장된 모든 세션 정보를 반환합니다. 그러면 다른 사이트에서 사용자를 인증하고 자체 인증 쿠키를 발급 할 수 있습니다. 사용자가 다른 사이트를 탐색하는 동안 메인 사이트 세션을 유지하려면 무언가를 구현해야합니다. 잠시 부재중 인 경우 로그인하지 않아도됩니다. 이는 영구 쿠키 또는 기본 사이트의 더미 페이지를 가리키는 보조 사이트의 iframe으로 얻을 수 있습니다.

+0

내가 더 이상 설명하기 전에, 내가 위에서 언급 한 것처럼 나는 100 % 명확하지 않을 수도있다. "2 사이트"가 없습니다. 고객이 순수하게 자체 시스템에서 Google 앱을 구매 및 실행했습니다. 그런 다음 자신의 웹 사이트에서 인터넷에 연결되기를 원합니다. 자신의 사이트와 ASP.NET 응용 프로그램을 서비스하는 단일 IIS를 가정 해 보겠습니다. –

관련 문제