Аутентификация и авторизация
Процесс проверки подлинности пользовательских данных и выдача пользователю определённых прав в FastReport Corporate Server осуществляется по одному из двух доступных способов:
Через JWT token.
В этом случае аутентификацию нужно пройти лично, а токен будет действовать только 5 минут, за которые пользователь должен войти в своё приложение. При подключении к серверу браузер перенаправит на сервер аутентификации, после чего сгенерирует токен доступа. С точки зрения безопасности мы ограничиваем возможность получения JWT токена только лично пользователем.
Если в течении 5 минут пользователь не зашёл в приложение, то аутентификацию необходимо пройти заново. Если пользователь зашёл в приложение повторная аутентификация не требуется.
Через API key.
В этом случае процесс получения прав доступа осуществляется для серверных приложений. Для получения ключа доступа (API key) необходимо присутствие пользователя. Однако сам ключ может действовать продолжительное время, например, год.
Получение первого API key
Для получения первого API key воспользуйтесь пользовательской панелью. Если по какой то причине доступа к пользовательской панели нет, можно запросить ключ по описанию ниже.
Откройте ссылку в браузере: https://fastreport.cloud/account/signin?r=https://fastreport.cloud/api/manage/v1/ApiKeys.
Переход по этой ссылке направит вас на автоматический процесс аутентификации браузера.
Теперь когда аутентификация пройдена, необходимо запросить новый ключ.
Нажмите
F12
илиCtrl+Shift+I
, что бы открыть панель разработчика. Сочетание клавиш могут отличаться от стандартных, в этом случае откройте панель разработчика через меню браузера.Скопируйте и выполните код в консоли JavaScript.
Этот код сделает
POST
запрос на URLhttps://fastreport.cloud/api/manage/v1/ApiKeys
для создания нового ключа доступа до 2030 года.await fetch('https://fastreport.cloud/api/manage/v1/ApiKeys', { method: 'POST', headers: { 'Content-Type': 'application/json;charset=utf-8' }, body: JSON. stringify({ "description": "Generated by js develop panel", "expired": "2030-01-01T07:41:23.399Z" }) });
Обновите страницу браузера и получите результат.
{ "apiKeys": [ { "value": "cc355oeu1z5d5wncayo33me6c1g5junqdqk4pkupid7t8ynjshey", "description": "Generated by js develop panel", "expired": "2030-01-01T07:41:23.399Z" } ], "count": 1 }
Теперь вы можете использовать API key, в случае выше это cc355oeu1z5d5wncayo33me6c1g5junqdqk4pkupid7t8ynjshey
.
Повторно получать новый API key через браузер нет необходимости.
Как использовать API key
Ключ следует передавать с каждым запросом в заголовке Authorization: Basic
. В качестве имени пользователя следует использовать apikey в качестве пароля значение ключа. Например.
Authorization: Basic Base64Encode(apikey:cc355oeu1z5d5wncayo33me6c1g5junqdqk4pkupid7t8ynjshey);
Где Base64Encode
это функция кодировки строки в base64.
Для FastReport.Cloud.SDK
есть специальный класс, который позволяет добавлять ключ к заголовку запроса <xref:FastReport.Cloud.FastReportCloudApiKeyHeader>.
Для добавления нужного заголовка создайте новый HttpClient
.
HttpClient httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Authorization = new FastReportCloudApiKeyHeader(apiKey);
Теперь этот HttpClient
можно использовать для всех запросов.
Получение нового API key
Для получения нового ключа следует вызвать метод <xref:FastReport.Cloud.Management.ApiKeysClient.CreateApiKeyAsync(FastReport.Cloud.CreateApiKeyVM)>
CreateApiKeyVM model = new CreateApiKeyVM()
{
Description = "Created by FastReport.Cloud.SDK",
Expired = DateTime.Now.AddYears(1)
};
IApiKeysClient apiKeysClient = new ApiKeysClient(httpClient);
await apiKeysClient.CreateApiKeyAsync(model);
По возможности используете асинхронные аналоги методов вместо синхронных.
В результате выполнения этой функции будет получена модель <xref:FastReport.Cloud.ApiKeyVM>.