2014-11-10 2 views
3

SAML 인증으로 보호 된 인트라넷 웹 사이트에서 엑셀 파일을 다운로드 할 수있는 Excel vba 플러그인을 만들고 싶습니다.VBA를 사용하여 SAML 인증 웹 사이트에서 파일 다운로드

Internet Explorer 나 Google 크롬을 사용하여 파일을 다운로드하려고하면 파일이 자동으로 자격 증명을 다운로드하지 않고 다운로드되기 시작하며 브라우저에 의존하는 일종의 통합 된 Windows 인증이 있기 때문에이 파일이 자동으로 다운로드됩니다.

winhttp.winhttprequest.5.1과 같은 VBA 개체를 사용하여 다운로드하려고하면 SAML 인증을 시작한다고 생각되는 HTML 페이지가 표시됩니다 (사용하지 않은 winhttp.winhttprequest.5.1 개체가 있다고 가정 함). SAML 인증 지원).

VBA로 SAML 인증을 수행하는 쉬운 방법이 있습니까? 아니면 수동으로 인증 단계를 코딩해야합니까?

+0

답을 알고 싶기 때문에 나는 upvote를주었습니다. – tbur

답변

1

문제는 Windows/Office와 함께 배포되는 다양한 라이브러리가 HTTP와 SSL을 뒤쫓아 다니지만 SAML을 찾는 라이브러리를 찾는 것은 쉽지 않습니다. .NET에는 VBA에서 사용할 수있는 WCF (Windows Communication Foundation)가 있지만 웹 사이트에서 작동하는 방식을 알지 못합니다.

SAML을 수행하기 위해 WCF를 사용할 수없는 경우 Internet Explorer에 이미 SAML 기능이 포함되어 있으므로 Internet Explorer를 자동화하는 것이 가장 쉬운 방법 일 수 있습니다. 불행히도 인터넷 익스플로러에서 자동화하기 힘든 한가지는 파일을 다운로드하는 것입니다. 특히 사용자의 화면에 상황이 나타나지 않게하려면 특히 그렇습니다.

Windows API를 사용하여 프로그래밍 방식으로 Internet Explorer의 "다른 이름으로 저장"대화 상자와 상호 작용하여 숨겨진 상태로 유지해야합니다. 다음 문서에서는이 작업을 수행하는 방법을 설명합니다. http://www.codeproject.com/Articles/2847/Automated-IE-SaveAs-MHTML 이 문서에서는 C++을 사용하지만 VBA에서 동일한 API 호출을 수행 할 수 있습니다.

서버가 어떤 종류의 SAML을 사용하고 있는지, 그리고 무엇이 더 쉬운지를 결정해야 할 것 같습니다. (a) Internet Explorer 자동화 또는 (b) 자신의 SAML 클라이언트 작성.

자체 SAML 클라이언트를 작성하려는 경우 MSXML을 사용하여 필요한 XML을 소비하고 생성하고 base64를 인 코드/디코드 할 수 있습니다.

+0

불행히도 내 두려움을 확인하고 있지만 여전히 투표권이 있습니다. IE를 숨긴 채로 IE 다운로드 창과 상호 작용하는 것에 대해 생각하고 있었지만 몇 가지 문제가 있습니다. 사용자가 다운로드 옵션을 설정하여 다운로드 창이 표시되지 않는 경우를 생각해 볼 수 있습니다. 파일이 자동으로 사용자 정의 다운로드 폴더에 저장됩니다. – Marco

관련 문제