2014-09-05 6 views
0

다른 사이트에 대한 로그인 자격 증명을 묻는 웹 사이트가 있습니다. 이 사이트는 내 서버 외부에 있습니다. craigslist.com과 같은 것. 사용자가 자신의 사용자 이름과 암호를 알려 주면이 자격 증명이 해당 사이트에 유효한지 확인할 수 있기를 원합니다. 그렇지 않으면 외부 사이트에 대한 자격 증명을 잘못 입력했음을 사용자에게 알리고 자합니다. 이 일을 할 수있는 방법이 있습니까? 나는 해결책이 asp.net (vb.net/aspx)에 있으면 좋겠지 만 다른 언어들과 함께 일할 의지가있다. 내가해야만한다면 의사 소통을 할 수있는 방법을 찾을거야.외부 사이트의 로그인 자격 증명 확인

답변

0

물론입니다. 빠른주의 사항 : 사용자가 제공하는 이러한 비밀을 보호하기 위해 좋은 보안 모델을 사용해야합니다. 이는 복잡하고 복잡한 주제입니다. 데이터가 저장소에있는 앱에 의해 암호화되기를 바라지 만 응용 프로그램은 이것을 일반 텍스트로 해독 할 수 있으므로 자격 증명을 저장할 책임이 있습니다. 따라서 응용 프로그램에 책임이 있습니다. 원격 웹 사이트에서 서비스 약관을 위반하지 않았는지 확인할 수도 있습니다.

하지만이 질문에 대해서는 기본적으로 다른 사이트에서 사용자가 수동으로 로그인하도록 웹 요청을 여는 코드가 필요합니다. 사용자 대신 사용자의 .NET 코드에서 원격 서버의 로그인 양식을 POST합니다. 코드를 작성하기위한 전략 :

  • 당신이 알려진 좋은 자격 증명을 사용하여 웹 브라우저에서 수동으로 원격 사이트에 해당 로그인 양식을 게시 할 때 브라우저에 의해 전송되는 웹 트래픽을 검사하는 Fiddler 같은 도구를 사용합니다.
  • 유효한 요청에 어떤 입력란을 게시해야하는지 확인하고 요청할 수있는 특수 요구 사항에주의를 기울이십시오 (프로그래밍 방식 요청을 실제 브라우저 요청과 정확히 일치 시키려면 최선을 다하십시오).
  • 동일한 헤더를 모두 전달하십시오 Accept, Referer, Cookies (여분의 신용을 위해 ... POST를하기 전에 초기 설정 요청으로 설정해야하는 설정된 세션 쿠키를 찾고있을 수도 있음) 등과 같은 필드를 모두 포함해야합니다. 브라우저가 게시 할 POST ... 브라우저가 게시하는 숨겨진 필드와 모든 요청 관련 필드를주의해야합니다 (서버에 유효한 GET 요청을 작성한 후 POST - 페이로드를 보내려는 요청) 일부 양식은 표시를 설정하여 봇의 예방을받습니다 : 필드에 아무 것도 표시하지 않습니다. 수동 사용자 로그인은하지 않습니다 (Fiddler에서 볼 수 있듯이).
  • 그런 다음 올바른 로그인이 성공한 후 어떤 응답이 표시되는지 확인하십시오.
    • "성공"페이지에서 로그인 성공 여부를 확인할 수있는 확실한 정보를 찾으십시오. 예를 들어 '성공 마커'역할을하는 특정 문자열/HTML 스 니펫을 검색 할 수 있습니다. 응답 코드, 발생하는 리디렉션 등과 같은 HTTP 응답의 다른 특성을 사용할 수도 있습니다. 모두 성공적인 로그인과 실패한 로그인 이후의 원격 서버 작동 방식에 따라 다릅니다.
  • 원격 웹 사이트는 언제든지 HTML 형식을 변경할 수 있으므로 논리가 손상 될 수 있습니다. 따라서 그러한 가정을 할 수 있다면 가장 쉽게 파산 할 수있는 전략을 선택하십시오.
    • 이 가능성을 계획하는 데있어 가장 좋은 점은 예약 된 기준에 따라 실행되는 "모니터"프로그램을 작성하여 성공적인 로그인을 결정하는 데 사용하는 논리를 테스트한다는 것입니다.
    • 클래스 라이브러리에서이 작업을 수행하는 코드를 캡슐화하여 ASP.Net 앱과 모니터 프로그램이 모두이를 공유 할 수 있도록하십시오.
    • 모니터 프로그램에 경고 메시지를 보내주십시오 (예 :이메일)에 로그인 할 수 없거나 원격 사이트에서 로그인 성공을 해석 할 수없는 경우. 이렇게하면 사용자가 알아 차리기 전에 즉시 수정 작업을 시작할 수 있습니다.
    • 모니터 응용 프로그램을 Windows 서비스로 호스트하거나 가능하지 않은 경우 작업 스케줄러에서 실행되는 콘솔 응용 프로그램을 호스트합니다.
    • 원격 웹 사이트를 예의 주시하고 가능하면 하루에 1-2 번만 모니터를 실행하십시오. 프로젝트 요구 사항에 따라 문제에 대응할 충분한 시간이 될 수 있습니다.

는 .NET 프레임 워크에서 찾고있는 클래스는 HttpWebRequest입니다. 다음은 코드를 시작할 수 있습니다 몇 가지 예입니다 : 내가 제대로 이해한다면

+0

그래서 내가 하나를 에뮬레이트하는 요청을 통해 사용자 정의 HTTP 헤더를 통과해야 그 웹 페이지에서 브라우저에 의해 전송됩니다. 그런 다음 원격 서버에서 보낸 응답이 성공했음을 나타내는 내용을 구문 분석합니다. 나는 그런 식으로 생각하지 않았을 것입니다. 나는 TOS 물건에 대해 100 % 확신하지는 않는다. 그러나 내가 거기에 도착할 때 나는 그 다리를 건너 뛸 것이다. 내 필요를 충족시키기 위해 충분히 작업 할 수있는 충분한 솔루션을 제공 한 것에 대한 신뢰를 줘야합니다. 브라보. – Vikk

+0

예, 확장하여 여러 HTTP 헤더와 HTTP 요청 본문을 설정한다고 가정합니다. 프로그래밍 방식 웹 요청이 브라우저를 통한 수동 웹 요청과 똑같이 보이기를 원합니다. HttpWebRequest 클래스는 HTTP 헤더와 본문을 제어하기 위해 다양한 속성 등을 설정하여이 작업을 수행하게합니다. 피들러를 사용하여 차이점이 제거 될 때까지 수동 요청과 프로그래밍 방식의 요청을 비교하면 잘 될 것입니다. 원격 웹 사이트의 아키텍처로 인해 두 가지 이유가있을 수 있습니다. 그런 다음이를 통합하십시오. –

관련 문제