В настоящее время я разрабатываю прототип системы авторизации с использованием ASP.NET Web API 2 и angular. Для авторизации и аутентификации я использую IdentityServer3.
Архитектура выглядит так:
- Внешний интерфейс: угловой (6)
- Клиент: ASP.NET Web API 2
- Сервер авторизации: ASP.NET Web API 2
- Сервер ресурсов: ASP.NET Web API 2
угловое приложение обслуживается клиентом, и только выполняет вызовы API для клиента.
Я хочу использовать гибридный поток. Таким образом, клиент связывается с сервером ресурсов.
При вызове API путем ввода URL-адреса в адресную строку, например:
http://localhost:12059/api/v1/orders
все работает отлично. Браузер перенаправляет пользователя на IdentityServer, где он может аутентифицироваться и авторизоваться.
Но когда я выполняю тот же API-вызов клиента с использованием angular, пользователь не перенаправляется. он просто получает ошибку в консоли:
Unexpected token < in JSON at position 0 at JSON.parse (<anonymous>)
Угловой вызов API выглядит следующим образом:
getOrders(): Observable<any> {
return this.http.get(`/api/v1/orders`);
}
И конечная точка в C # выглядит так:
[Authorize]
[Route("")]
public async Task<IHttpActionResult> Get()
{
var user = User as ClaimsPrincipal;
var token = user.FindFirst("access_token").Value;
var result = await CallApi(token);
return Ok(result);
}
Это не имеет особого смысла для меня, так как клиент делает запрос на авторизацию.