Как я могу запустить URL-адрес в .NET с заголовком авторизации?

Мы создаем плагин для системы Encompass Элли Мэй для клиента.

Этот конкретный плагин имеет только одну кнопку, которая при нажатии запускает URL-адрес и передает идентификатор пользователя, вошедшего в систему Encompass в данный момент. Это все очень просто, используя следующий код...

Private Sub btnProductSearch_Click(sender As Object, e As EventArgs) 
Handles btnProductSearch.Click
    Try
        Dim cliid = EncompassApplication.Session.ClientID,
            unm As String = EncompassApplication.CurrentUser().ID,
            url As String = GetServiceUrl(cliid)

        If String.IsNullOrEmpty(url) Then
            MsgBox("No matching URL found for current Encompass Client ID.")
        Else
            Process.Start(url & unm)
        End If
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
End Sub

Теперь самое интересное... они не хотят, чтобы пользователь входил в систему по запускаемому URL-адресу, но хотят, чтобы мы передавали аутентификацию по URL-адресу через HTTP-заголовок Authorization.

Это было бы достаточно просто, если бы мы делали наш собственный веб-запрос в коде, например:

    Dim wreq = HttpWebRequest.CreateHttp(url)
    wreq.Method = "POST"

    Dim authBytes As Byte() = Encoding.UTF8.GetBytes("EncodedInfoHere".ToCharArray())
    wreq.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(authBytes))
    wreq.ContentType = "application/json"

Однако мы не делаем веб-запрос кода, а просто запускаем URL-адрес через Process.Start. Есть ли способ при этом передать заголовок Authorization?


person eidylon    schedule 05.12.2014    source источник
comment
Похоже, у этого парня была похожая проблема: link< /а>   -  person Mathemats    schedule 05.12.2014


Ответы (1)


С помощью этого вопроса я удалил скрытый WebBrowser в моей форме, а затем запустил URL-адрес во внешнем браузере с заголовком Authorization следующим образом...

' wb is the WebBrowser 
Dim hdr = "Authorization: Basic " & Convert.ToBase64String(Encoding.UTF8.GetBytes("EncodedInfoHere".ToCharArray()))
wb.Navigate(url & unm, "_blank", {}, hdr)
person eidylon    schedule 05.12.2014