звучит похоже на почти множество вопросов, но это не
вкратце проблема:
Я разместил Asp. net core App на azure, а аутентификация, которую я использовал, - AccessToken.
, когда я пытаюсь отправить запрос Get (получение электронной почты пользователя с использованием графика Microsoft) в браузере, он работает с тех пор, как я вошел в систему.
** everthing fine sofar **
я знаю, что в этой памяти onet браузер кеширует все (сеанс - файлы cookie - accesstoken) на какое-то время, и токен будет повторно использован позже для авторизации последующих вызовов API, но в почтальоне дело обстоит иначе. что я пытаюсь отправить запрос (внешний запрос) до входа в систему (авторизация отсутствует), и это logi c. поэтому я думаю, что это, возможно, причина, по которой я получил ошибку 500 в почтальоне.
можно ли как-нибудь заставить почтальона использовать кеш браузера - или использовать этот токен? или даже сделать вызовы авторизации, например, отправить этот доступ внутри запроса API заголовка? если возможно, я хочу, как реализовать это на стороне сервера ..
что я пробовал:
на стороне сервера - startup.cs -> ConfigureServices i Сконфигурировал службу для разрешения анонимных вызовов и для не зарегистрированные пользователи для выполнения этого запроса.
services.AddMvc(options =>
{
var policy = new AuthorizationPolicyBuilder().RequireAuthenticatedUser()
.Build();
options.Filters.Add(new AuthorizeActionFilter(policy));
});
и в контроллере, где конечная точка api:
[Route("api/[controller]/[action]")]
[ApiController]
[AllowAnonymous]
public class FooController : ControllerBase
{
protected IExtraService _extraService;
private readonly ITokenAcquisition _tokenAcquisition;
private readonly WebOptions _webOptions;
public FooController(IExtraService extraService)
{
_extraService = extraService;
}
[HttpGet]
public async Task<string> FooEmail()
{
string FooEmail = string.Empty;
FooEmail =await _extraService.getFooEmail();
return FooEmail;
}
в _extraService -> реализация getFooEmail ()
public async Task<string> getFooEmail()
{
client = GetGraphServiceClient(new[] { Services.Constants.ScopeUserReadBasicAll});
var searchResult = (User)await client.Me.Manager.Request().GetAsync();
return searchResult.Mail;
}
что делать вы думаете об этом?