2013-04-14 2 views
7

CSV 파일을 사용하여 회사 구조를 업로드 할 수있는 asp.net mvc 응용 프로그램이 있습니다. powershell 스크립트를 사용하여이 기능을 자동화하는 가능성에 대해 질문을 받았습니다. powershell에서 CSV를 만드는 것은 쉽지만 asp.net에 업로드하는 방법을 알지 못합니다.파일 형식 powershell을 asp.net에 업로드

나의 첫 번째 선택은 WebClient를 사용하는 것이지만 인증에 문제가 있습니다. mvc에서는 폼 인증을 사용하고 있습니다. here을 읽을 수는 있지만 로그인 양식이 변경되면 클라이언트에 업데이트 된 스크립트를 보내야합니다. . 클라이언트 측에서 맹 글 코드를 생략하고 싶습니다.

두 번째 옵션은 별도의 컨트롤러를 크레이트하고 권한 부여 토큰을 사용하는 것입니다. 그러나 인증을 담당하는 모든 코드를 작성해야하므로 "바퀴를 다시 발명하는 것"처럼 보입니다.

위의 옵션 중 하나를 향상시킬 수 있습니까? 아니면 더 나은 선택이 있을까요?

+0

회사에서 어떤 사람이 파일을 업로드했는지 알아야합니까? 그렇지 않다면, 그냥 https 웹 API를 만들고 간단한 "apikey"를 사용하지 않는 것이 좋습니다. 각 회사에 "apikey"및 나머지 API 링크가있는 스크립트를 제공하십시오. –

+0

보안상의 이유로 나는 그렇다고 생각합니다. 나는 모두를위한 API 키를 생각하고 있었지만 좋은 생각인지 확실하지 않다. –

답변

0

사이드 채널 사용은 어떻습니까?

두 가지 접근 방법이 있습니다. 당신은 그 때마다 고객의 웹 서버로 보내거나 웹 서버가 당신으로부터 데이터를 다운로드합니다.

데이터를 전송하려면 FTP over SSL이 안전해야합니다. 다음은 Powershell로 FTP를 명령하는 방법에 관한 example입니다. IIS 용으로 구성하려면 FTP/SSL이 easy enough입니다.

데이터를 수신하려면 자신의 웹 사이트에 CSV를 게시하기 만하면됩니다. CSV를 다운로드 할 때마다 고객의 웹 서버에 스크립트를 설정하십시오. CSV에 고객이 아닌 다른 사람이 액세스 할 수 없도록하려면 client certificate이 필요합니다.

+0

하지만 나는 다른 방법이 필요하다. 클라이언트는 회사 구조로 CSV를 생성하고 내 서버에 업로드합니다. –

+0

어? 역할을 뒤집을 수 있을까요? – vonPryz

+0

회사에서 업로드 한 파일을 FTP로 어떻게 찾을 수 있습니까? Morover 저는 모든 회사의 인증서를 만들고, 회사마다 폴더를 만들어야합니다. 관리가 어렵습니다. –

0

아마 이런 식으로 할 것 :

  • 1 단계 : csv로에게받을 수있는 asp.net 서버에서 HTTPS 웹 페이지를 만들기
  • 2 단계 : 호출 말림 PowerShell 스크립트 만들기 -F 옵션을 사용하여 파일을 게시하고 통화에 필요한 메타 데이터를 추가하십시오.
  • 3 단계 : 파일을 받으면 양식에 제공된 메타 데이터를 사용하여 파일을 저장하고 clientyd/date/etc를 파일
  • 에 추가하십시오
+0

인증에 문제가 있습니다. HTTP는 단지 프로토콜입니다 –

+0

내 나쁜 내가 그것을 통해 읽지 않았어, 당신은 항상 로그 폼에 제출하고 쿠키를 저장할 수있는 추측 당신이 나중에 요청에 추가 할 수 있도록, 휘발성 var 이름을 원한다면 클라이언트는 미리 구성 파일을 다운로드합니다. – RuntimeError

1

Invoke-RestMethod cmdlet을 사용하여 기존 웹 서비스를 사용할 수는 있지만 두 번의 별도 호출이 필요할 수 있습니다. 두 호출 모두에 대해서는 아마도 -Method Post이라고 말할 필요가 있습니다. WebClient를 사용하여이 모든 작업을 수행 할 수 있지만이 cmdlet은 더 쉽게 설명 할 수 있습니다. 사실이 시도하지 않은,하지만이 같은 것을 볼 수 있었다 : 당신은 로그인 페이지의 URL을 지정하고 사용자 이름과 비밀 번호를 사용하여 로그인 웹 양식을 시뮬레이션 할 첫 번째 호출을위한

Invoke-RestMethod -Method Post $loginPage -SessionVariable webSession -Body "..." 
Invoke-RestMethod -Method Post $uploadPage -WebSession $webSession -Body "..." 

-Body 파 메터에서 -SessionVariable을 사용하여 다음 요청을 인증하기위한 컨텍스트를 캡처하고 저장하십시오.

두 번째 요청에서는 데이터 업로드 URL 인 -WebSession을 사용하여 첫 번째 요청에 의해 설정된 컨텍스트를 제공하고 -Body은 CSV를 업로드합니다. 두 번째에는 webSession 변수에 달러 기호가 필요하지만 첫 번째 변수에는 달러 기호가 필요하지 않습니다.

물론 오토메이션이 어딘가에서 사용하려면 사용자 이름/비밀번호를 저장해야하지만 무인 자동화에는 항상 필요합니다. 이를 완화하기위한 가능한 매끄러운 접근법은 웹 폼 인증이 아닌 클라이언트 인증서 기반의 자격 증명을 사용하는 것입니다.

+0

나는이 해결책을 시도 할 것이다. 아이디어 +1 –

관련 문제