on
[ASP.NET] NAS 영역 접근 identity impersonate 사용 한 사례
[ASP.NET] NAS 영역 접근 identity impersonate 사용 한 사례
[ASP.NET] NAS 영역 접근 identity impersonate 사용 한 사례
WebSite Behind Code [ aspx.cs ] 페이지에서 , NAS [ Network Access Strorage ] 에 접근이 필요 한 케이스 였고
NAS에 인증 부분은 UserID 와 , Password를 이용한 인증 방식 이었습니다.
WINAPI 함수를 이용하여 접근 시에 , NAS 영역에 정상적으로 Access가 되나 , NAS 영역에 디렉터리 생성 시에는 권한 관련 오류가 발생 하였습니다.
[DllImport("mpr.dll", CharSet = CharSet.Auto)] public static extern int WNetUseConnection ( IntPtr hwndOwner, [MarshalAs(UnmanagedType.Struct)] ref NETSOURCE IPNetResource, string IPPassword, string IPUserID, uint dwFlags, StringBuilder IPAccessName, ref int IPBufferSize, out uint IPResult ); internal string setRemoteConnection(string strRemoteConnectString, string strRemoteUserID, string strRemotePWD) { int capacity = 64; uint resultFlags = 0; uint flags = 0; try { if ((strRemoteConnectString != "" || strRemoteConnectString != string.Empty) && (strRemoteUserID != "" || strRemoteUserID != string.Empty) && (strRemotePWD != "" || strRemotePWD != string.Empty)) { StringBuilder sb = new StringBuilder(capacity); NETSOURCE ns = new NETSOURCE(); ns.dwType = 1; //공유디스크 ns.IPLocalName = null; //로컬 드라이브 지정하지 않음 ns.IPRemoteName = @strRemoteConnectString; ns.IPProvider = null; int result = WNetUseConnection(IntPtr.Zero, ref ns, strRemotePWD, strRemoteUserID, flags, sb, ref capacity, out resultFlags); if (result == 0) { //Successfully connected to a network drive return "네트워크 드라이브가 성공적으로 연결되었습니다."; } else { //Unable to connect to a network drive. Please check your connection information. return "네트워크 드라이브를 연결할 수 없습니다.
연결 정보를 확인하세요.."; } } else { //Network drive connection information is incorrect return "네트워크 드라이브 연결 정보가 올바르지 않습니다."; } } catch (Exception e) { return e.Message; } }
해당 함수를 호출 한 후에도 디렉터리를 생성 시에는 권한 관련 오류가 발생 하였으며 , IUSR_ [인터넷 정보 서비스 계정 ] 로 시작하는 계정으로 실제 NAS 영역에 접근이 되는 걸로 Exception 의 내용을 확인 할 수 있었습니다.
추가 조치 사항은 , 해당 IIS 운영중인 Windows Server에 NAS 에 Access 하는 동일한 Windows 계정을 생성 하였으며 , [패스워드 동일 하게 ]
Web.config에 System.web 노드의 하위 부분에 아래 사항을 추가 한 후 정상적으로 NAS 영역에 디렉터리 생성처리가 정상적으로 진행 되었습니다.
from http://hwoarang757.tistory.com/219 by ccl(A) rewrite - 2021-11-08 23:26:44