Sitecore 7.2 - 项目Web API - 用户身份验证

Vik*_*ram 6 c# sitecore sitecore7.2

我想限制Sitecore的项Web API将数据发送到身份验证的用户只能与按文件,我们需要在通过用户名和密码http request headerX-Scitemwebapi-Username:X-Scitemwebapi-Password

为此,我使用下面的代码:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://scapidemo.local/-/item/v1/?sc_itemid={110D559F-DEA5-42EA-9C1C-8A5DF7E70EF9}&sc_database=master");

request.Headers["X-Scitemwebapi-Username"] = "admin";
request.Headers["X-Scitemwebapi-Password"] = "b";

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Response.Write(String.Format("Content length is {0}", response.ContentLength));
Response.Write(String.Format("Content type is {0}", response.ContentType));
// Get the stream associated with the response.
Stream receiveStream = response.GetResponseStream();

// Pipes the stream to a higher level stream reader with the required encoding format. 
StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8);

Response.Write("<br /> Response stream received. <br />");
Response.Write(readStream.ReadToEnd());
Run Code Online (Sandbox Code Playgroud)

Sitecore.ItemWebApi.config我添加了我的网站设置如下:

itemwebapi.mode="StandardSecurity"
itemwebapi.access="ReadOnly"
itemwebapi.allowanonymousaccess="false"/>
Run Code Online (Sandbox Code Playgroud)

现在,在运行我的应用程序时,我收到此错误:

{"statusCode":401,"error":{"message":"Access to site is not granted."}}  
Run Code Online (Sandbox Code Playgroud)

nsg*_*cev 6

您传递的用户没有它所属的域.ItemWebAPI没有默认域名,因此每次拨打电话时都需要通过用户"域\用户".

所有这一切 - 试试这样:

request.Headers["X-Scitemwebapi-Username"] = @"sitecore\admin";
request.Headers["X-Scitemwebapi-Password"] = "b";
Run Code Online (Sandbox Code Playgroud)