如何在实现自定义安全性的情况下调用SSRS Rest-Api V1.0(非SOAP)

时间:2018-04-17 11:20:49

标签: rest reporting-services authorization ssrs-2016 custom-authentication

我已在2016年报告服务上实施了自定义安全性,并在浏览器URL栏(报告或报告服务器)上键入报告服务的URL后显示登录页面

我使用以下代码传递凭据 当我使用代码没有我的安全扩展它工作,看起来像这样

ICredentials _executionCredentials;

CredentialCache myCache = new CredentialCache();
Uri reportServerUri = new Uri(ReportServerUrl);
myCache.Add(new Uri(reportServerUri.GetLeftPart(UriPartial.Authority)),
                 "NTLM", new NetworkCredential(MyUserName, MyUserPassword));
_executionCredentials = myCache;

当我使用安全扩展的代码时,它不起作用,看起来像这样

ICredentials _executionCredentials;
CredentialCache myCache = new CredentialCache();
Uri reportServerUri = new Uri(ReportServerUrl);

myCache.Add(new Uri(reportServerUri.GetLeftPart(UriPartial.Authority)),
                "Basic", new NetworkCredential(MyUserName, MyUserPassword));
_executionCredentials = myCache;

我得到一个异常说" 对此POST请求的响应不包含'位置'头。这个客户端不支持。"当我实际使用此凭据时

"基本"错误的选择?

有没有人这样做过?

更新1 事实证明我的SSRS期待一个授权cookie 我无法通过(根据提琴手,没有cookie)

HttpWebRequest request;
request = (HttpWebRequest)HttpWebRequest.Create("http://mylocalcomputerwithRS/Reports_SQL2016/api/v1.0");
CookieContainer cookieJar = new CookieContainer();
request.CookieContainer = cookieJar;
Cookie authCookie =  new Cookie("sqlAuthCookie", "username:password");
authCookie.Domain = ".mydomain.mylocalcomputerwithRS";
if (authCookie != null)
    request.CookieContainer.Add(authCookie);
request.Timeout = -1;

HttpWebResponse myHttpWebResponse = (HttpWebResponse)request.GetResponse();

1 个答案:

答案 0 :(得分:0)

我就是这样的(SSRS 2017; api v2.0)。我从Fiddler那里获取了“身体”的价值:

li