我有一个WPF应用程序,该应用程序需要针对使用Owin管理身份验证的MVC应用程序进行身份验证。 SOed之后,我发现正确的方法是传递AuthenticationHeaderValue并正确验证我的凭据。
async Task<LoggedUser> GetLoggedUser(string username, string password)
{
var client = new HttpClient { BaseAddress = new Uri(ConfigurationManager.AppSettings.Get("backendUrl")) };
// var request = new HttpRequestMessage(HttpMethod.Get, "/api/account");
var byteArray = new UTF8Encoding().GetBytes("<clientid>:<clientsecret>");
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
// request.Content = new FormUrlEncodedContent(formData);
var response = await client.GetAsync(new Uri("/api/account", UriKind.Relative));
var message = await response.Content.ReadAsStringAsync();
var item = JsonConvert.DeserializeObject<MessageItem>(message);
return new LoggedUser();
}
现在,我需要调用另一个Web服务方法来获取一些其他用户的信息,但是我收到了错误响应。我认为我需要将令牌或从第一次通话中得到的东西传递给授权后需要执行的每个通话。
我尝试了以下代码
async Task<LoggedUser> GetLoggedUser(string username, string password)
{
var client = new HttpClient { BaseAddress = new Uri(ConfigurationManager.AppSettings.Get("backendUrl")) };
// var request = new HttpRequestMessage(HttpMethod.Get, "/api/account");
var byteArray = new UTF8Encoding().GetBytes("<clientid>:<clientsecret>");
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
// request.Content = new FormUrlEncodedContent(formData);
var response = await client.GetAsync(new Uri("/api/account", UriKind.Relative));
var message = await response.Content.ReadAsStringAsync();
var item = JsonConvert.DeserializeObject<MessageItem>(message);
return new LoggedUser();
}
但是它返回我上面粘贴的错误。 我要通过什么? 谢谢