У меня есть веб-приложение, которое аутентифицирует пользователя на Identity Server 4, используя неявного клиента.Мне нужен токен доступа для этого пользователя, чтобы я мог позвонить другому API.
Для ясности:
- У меня есть идентификационный сервер.Создано с использованием сервера удостоверений 4.
- У меня есть соответствующее веб-приложение, созданное в Asp .net core mvc.
- API, созданный в ядре .net.
Веб-приложение аутентифицирует пользователя на сервере идентификации.Как только они аутентифицируются, мы используем токены-носители для доступа к API.
services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
services.AddAuthentication(options =>
{
options.DefaultScheme = "cookie";
options.DefaultChallengeScheme = "oidc";
})
.AddCookie("cookie")
.AddOpenIdConnect("oidc", options =>
{
options.Authority = Configuration["ServiceSettings:IdentityServerEndpoint"];
options.ClientId = "f91ece52-81cf-4b7b-a296-26356f50841f";
options.SignInScheme = "cookie";
});
Пользователь в порядке аутентификации, и я могу получить доступ к контроллеру ниже.Мне нужен токен доступа для этого пользователя, чтобы я мог сделать запрос к другому API.
[Authorize]
public async Task<IActionResult> Index(int clientId, string error)
{
ViewData["Title"] = "Secrets";
if (User.Identity.IsAuthenticated)
{
// All of the below attempts result in either null or empty array
var attempt1 = Request.Headers["Authorization"];
var attempt2 = await HttpContext.GetTokenAsync("access_token");
var attempt3 = _httpContextAccessor.HttpContext.Request.Headers["Authorization"];
var attempt4 = await _httpContextAccessor.HttpContext.GetTokenAsync("access_token");
}
return View();
}
Следующее содержит заголовок с именем cookie.Есть ли способ получить токен доступа из этого?
var h = _httpContextAccessor.HttpContext.Request.Headers.ToList();
Как найти токен доступа для текущего аутентифицированного пользователя?Использование неявного входа в систему.
Примечание о гибридном и неявном входе в систему: я не могу использовать гибридный вход в систему из-за проблемы, указанной здесь Аутентификация ограничивает обширный размер заголовка Поскольку я не смог найти решение дляэтой проблемой было предложение перейти на неявный логин, а не гибридный.Похоже, неявное создание гигантской кулинарии, которую сделал гибрид.
Я следил за этим, чтобы создать неявного клиента Начало работы с Identityserver 4