【发布时间】:2020-08-24 08:29:40
【问题描述】:
我需要从https://token.docs.microsoft.com/accesstokens 获取令牌数组。这可以通过在 http 请求标头中包含 cookie 来完成。我已经用邮递员测试过了。它有效。
我有带有 ASP .Net 核心 Mvc 的 Web 应用程序。它将使用 Azure AD 进行身份验证。用户登录后,我需要发送一个包含“Cookie”请求标头的 API 请求。
static async Task<string> SendURI(Uri u, HttpContent c, string token)
{
var response = string.Empty;
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token);
HttpRequestMessage request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = u,
Content = c
};
HttpResponseMessage result = await client.SendAsync(request);
if (result.IsSuccessStatusCode)
{
response = result.StatusCode.ToString();
}
}
return response;
}
这就是我发送请求的方式。对于没有 cookie 请求标头的其他请求,它可以正常工作。但我需要知道如何从我的应用程序向这个 http 请求添加 cookie。 https://docs.microsoft.com/en-us/rest/api/resources/tenants/list#code-try-0 在这个文档中他们使用了这种方法。我的应用程序需要同样的努力。他们使用 cookie 标头向 https://token.docs.microsoft.com/accesstokens this 发送 post 请求。
更新: 可以通过 post man 代码将 header cookie 添加到 http 请求。
现在我面临着创建自定义 cookie 的挑战,例如使用 ms doc。
如何在 startup.cs 文件中创建客户 cookie?对于内容值应该包括什么?
services.AddSession(options =>
{
options.IdleTimeout = TimeSpan.FromSeconds(20);
options.Cookie.Name = ".TokenAuthCookies";
options.Cookie.Path = "/";
options.Cookie.Domain = ".docs.microsoft.com";
options.Cookie.IsEssential = true;
options.Cookie.SameSite = SameSiteMode.Unspecified;
});
我如何相应地更改上面的代码来实现这一点?
【问题讨论】:
标签: c# asp.net-mvc asp.net-core