Я столкнулся с проблемой, связанной с пользовательским исключением безопасности SSRS (Sql Server Reporting Server) 2019 в Windows Server 2019.
Отчет SSRS отлично работает из кода winforms vb.net в предыдущих версиях SQL Server (2016, 2014 и 2012), но не в 2019.
Запуск отчета с использованием исходного кода Vb.net Winforms и отправка WebRequest на сервер SSRS с необходимыми данными, такими как URL-адрес сервера, имя пользователя, пароль, DBName и т. д., с ответом с использованием webResponse, необходимо получить cookie-файл аутентификации для пользователя.
Получение ошибки, так как sqlAuthCookie имеет значение null, а также получение ошибки, так как пользовательское исключение безопасности не включено
Любое решение/помощь будут высоко оценены.
Прикрепил фрагмент кода, который отправляет данные с vb.net и получает ответ от сервера SSRS.
VB.NET Code
Protected Overrides Function GetWebResponse(ByVal request As WebRequest) As WebResponse
Dim response As WebResponse = MyBase.GetWebResponse(request)
Dim cookieName As String = response.Headers("RSAuthenticationHeader")
' If the response contains an auth header, store the cookie
If Not (cookieName Is Nothing) Then
Dim webResponse As HttpWebResponse = CType(response, HttpWebResponse)
Dim authCookie As Cookie = webResponse.Cookies(cookieName)
' If the auth cookie is null, throw an exception
If authCookie Is Nothing Then
Throw New Exception("Unable to generate report - the Reporting Services Custom Security Extension is expected to be enabled in XB")
End If
' otherwise save it for this request
Me.AuthCookie = authCookie
' and send it to the client
End If
Return response
End Function
//adding new GetUserInfo method for IAuthenticationExtension2
public void GetUserInfo(IRSRequestContext requestContext, out IIdentity userIdentity, out IntPtr userId)
{
userIdentity = null;
if (requestContext.User != null)
{
userIdentity = requestContext.User;
}
// initialize a pointer to the current user id to zero
userId = IntPtr.Zero;
}