문제

내가 필요한 네트워크에 액세스 자원에만 주어진 도메인 계정에 액세스할 수 있습니다.내가 사용하 LogonUser 부르지만,"사용자 없이 필요 priviliege"제외,웹 응용 프로그램은 실행 asp.net 계정과하지 않는 충분한 권한을 만들이다.

하는 방법이 있을 얻을 수 있습니다.변경하면 정의 권한 ASP.Net 계정이 없는 옵션이므로 생산 시스템으로 많은 프로젝트 실행됩니다.더 좋은 방법이 있 이를 달성하기 위해?

용 Asp.Net 2.0,형태를 인증합니다.

종류 감사합니다.

도움이 되었습니까?

해결책

Logonuser에게 전화하는 것만으로는 충분하지 않습니다. 그 사용자를 가장해야합니다. 네트워크 리소스에 대한 액세스를 위해 가장 할 수 있습니다.

샘플 코드는 찾을 수 있습니다 MSDN.

다른 팁

당신은 추가 할 수 있습니다

<identity impersonate="true" userName=""/>

Web.config에 태그를 주지만 전체 사이트를 해당 사용자로 실행하고 싶지 않기 때문에 이상적이지 않을 수도 있습니다.

네트워크 공유를 DomainName & Password와 함께 로컬 드라이브로 매핑 한 다음 매핑 된 드라이브를 통해 파일을 웹 사이트로 끌어 올릴 수 있습니까?

NET USE Z: \\SERVER\Share password /USER:DOMAIN\Username /PERSISTENT:YES

이 친밀한 경험이에서 1.1,그래서 일할 수 있습 hav 에서 변경 2.0days 하지만...우리가 하는 응용 프로그램에서 배포 인트라넷 시나리오,그리고 우리는 공격 동일한 것입니다.우리는 실행과 정체성을 가장 설정에서 형태로 모든 인증,익명 액세스를 꺼져 있습니다.가장 쉬운 방법이(는 것을 발견했)을 넣어하는 것입자의 자격에 대한 액세스 권한이 있는 사용자가 웹에서.config.그들은 노드에서 당신의 id 가장니다.의 경우 슈퍼 scret 정하지 않는 이 방법이지만!우리에만 액세스 공유 그래픽에서 인쇄 환경,그래서 대부분의 사이트가 행복을 설정 제한된 계정을 넣어 우리를 위해서다.confit.LogonUser 가 참으로 필요한 높은 privelidges.Msdn 는 몇 가지 좋은 방법에 대한 기사를 특정 사용자로 가장 코드입니다.나는 물고기는 일부 링크만이 전화를 하지 않는 사본을 붙여 넣습니다.

네트워크 리소스 보호 ACL을 변경할 수 있습니까? 내가 과거에 사용한 트릭은 Active Directory 그룹을 만들고 컴퓨터 객체를 해당 그룹에 넣는 것입니다. 그런 다음 액세스 해야하는 객체 (파일, 공유 등)의 액세스 제어 목록에서 해당 그룹을 사용합니다.

이를 통해 Windows 서비스를 로컬 시스템으로 실행하고 보호 된 네트워크 리소스에 액세스 할 수있었습니다. 그리고이 트릭은 네트워크 서비스로 실행되는 ASP.NET 프로세스에서도 작동하는 것 같습니다.

  • 이 웹 파트 y가 제한된 액세스가있는 순 리소스에 연결하면 파일을 넣고 리소스와의 연결을 닫습니다 (액세스 권한이 부여 된 사용자로서) 새로운 공유 연결, 즉 제한, 즉 Sistems 부서는 나에게 만듭니다. 아마도 필요한 수입품이 많을 수도 있지만 많은 테스트를 수행하고 코드를 청소할 시간이 없었습니다. 나는 당신에게 도움이되기를 바랍니다. (내 영어 가난한 것에 대해 죄송합니다).

Imports System Imports System.componentModel Imports System.Web.UI Imports System.Web.UI.WebControls Imports System.io Imports System.io.file 가져 오기 시스템 .Diagnostics Imports System.XML.Serialization Imports Microsoft.SharePoint imports Microsoft.Sharepoint.Utilities Microsoft.sharePoint.webPartPages 가져 오기 Microsoft.SharePoint.WebControls 가져 오기 Microsoft.SharePoint.Administration Imports System.Security.Principal Imports System.Security.Permissions Imports System.Interpervices Imports System.Environments System.Sockets System.weetb. .ui.htmlControls

공개 클래스 비인간 지화 비공개 const logon32_provider_default as integer = 0 개인 const logon32_logon_interactive as integer = 2

<DllImport("advapi32.dll", SetLastError:=True)> _
Public Shared Function LogonUser(ByVal lpszUsername As String, ByVal lpszDomain As String, ByVal lpszPassword As String, ByVal dwLogonType As Integer, ByVal dwLogonProvider As Integer, ByRef phToken As IntPtr) As Boolean
End Function

<DllImport("advapi32.dll", EntryPoint:="DuplicateToken", ExactSpelling:=False, CharSet:=CharSet.Auto, SetLastError:=True)> _
Public Shared Function DuplicateToken(ByVal ExistingTokenHandle As IntPtr, ByVal ImpersonationLevel As Integer, ByRef DuplicateTokenHandle As IntPtr) As Integer
End Function

Public Shared Function WinLogOn(ByVal strUsuario As String, ByVal strClave As String, ByVal strDominio As String) As WindowsImpersonationContext
    Dim tokenDuplicate As New IntPtr(0)
    Dim tokenHandle As New IntPtr(0)
    If LogonUser(strUsuario, strDominio, strClave, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, tokenHandle) Then
        If DuplicateToken(tokenHandle, 2, tokenDuplicate) <> 0 Then
            Return (New WindowsIdentity(tokenDuplicate)).Impersonate()
        End If
    End If
    Return Nothing
End Function

WebPart1에 대한 END 클래스의 설명. "), XMLROOT (네임 스페이스 : ="SPSCOPIARFICHERO ")> _ Public Class WebPart1은 Microsoft.sharePoint.WebPartPages.WebPart를 상속합니다.

Protected WithEvents File1 As HtmlInputFile

Dim vdestino As String = "\\centappd20nd01\uploads_avisos"
Dim vtemporal As String = "c:\pdf"

Protected WithEvents boton1 As Button
Protected WithEvents usuario As TextBox
Protected WithEvents contra As TextBox
Protected WithEvents dominio As TextBox
Protected WithEvents destino As TextBox
Protected WithEvents origen As TextBox
Protected WithEvents temporal As TextBox
Protected WithEvents log As TextBox
'Render this Web Part to the output parameter specified.
Protected Overrides Sub RenderWebPart(ByVal output As System.Web.UI.HtmlTextWriter)
    log.RenderControl(output)
    output.Write("<br><font>Ruta Origen</font><br>")
    File1.RenderControl(output)
    output.Write("<br><font>Ruta Temporal </font><br>")
    temporal.RenderControl(output)
    output.Write("<br><font>Ruta Destino </font><br>")
    destino.RenderControl(output)
    output.Write("<br><font>Usuario </font><br>")
    usuario.RenderControl(output)
    output.Write("<br><font>Contraseña </font><br>")
    contra.RenderControl(output)
    output.Write("<br><font>Dominio </font><br>")
    dominio.RenderControl(output)
    output.Write("<br><br><center>")
    boton1.RenderControl(output)
    output.Write("</center>")
End Sub
Protected Overrides Sub CreateChildControls()

    dominio = New TextBox
    With dominio
        .Text = "admon-cfnavarra"
        .Width = Unit.Pixel("255")
    End With
    Controls.Add(dominio)

    boton1 = New Button
    With boton1
        .Text = "Copiar Fichero"
    End With
    Controls.Add(boton1)

    File1 = New HtmlInputFile
    With File1

    End With
    Controls.Add(File1)

    usuario = New TextBox
    With usuario
        .Text = "SVCWSINCPre_SNS"
        .Width = Unit.Pixel("255")
    End With
    Controls.Add(usuario)

    contra = New TextBox
    With contra
        .Text = "SVCWSINCPre_SNS"
        .Width = Unit.Pixel("255")
    End With
    Controls.Add(contra)

    destino = New TextBox
    With destino
        .Text = vdestino
        .Width = Unit.Pixel("255")
    End With
    Controls.Add(destino)

    log = New TextBox
    With log
        .Width = Unit.Percentage(100)
        .BackColor = System.Drawing.Color.Black
        .ForeColor = System.Drawing.Color.White
    End With
    Controls.Add(log)

    temporal = New TextBox
    With temporal
        .Text = vtemporal
        .Width = Unit.Pixel("255")
    End With
    Controls.Add(temporal)
End Sub
Private Sub boton1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles boton1.Click
    If File1.PostedFile.FileName <> "" Then
        Dim _objContext As WindowsImpersonationContext = Nothing
        log.Text = QuienSoy()
        CopyFile(File1.PostedFile.FileName, temporal.Text)
        _objContext = Impersonalizacion.WinLogOn(usuario.Text, contra.Text, dominio.Text)
        CopyFile(temporal.Text & "\" & System.IO.Path.GetFileName(File1.PostedFile.FileName), destino.Text)
        _objContext.Undo()
    Else
        log.Text = "Se debe introducir un fichero"
    End If
End Sub
Friend Shared Function QuienSoy() As String
    Return WindowsIdentity.GetCurrent().Name
End Function
Public Function CopyFile(ByVal StartPath As String, ByVal EndPath As String)
    Try
        Dim fn As String = System.IO.Path.GetFileName(StartPath)
        System.IO.File.Copy(StartPath, EndPath & "\" & fn, False)
        log.Text = "Fichero Copiado Correctamente"
    Catch ex As Exception
        log.Text = ex.Message
    End Try
End Function

수업 종료

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top