<< Click to Display Table of Contents >> Интеграция с внешними системами > Аутентификация в сервисе интеграции Аутентификация с использованием токена |
Настройка внешней системы: не требуется.
Настройка сервиса интеграции: задайте в конфигурационном файле сертификат, которым будет подписываться токен. Это можно сделать одним из способов:
•задайте отпечаток сертификата в параметре DATA_PROTECTION_CERTIFICATE_THUMBPRINT;
•задайте файл сертификата и пароль к нему в параметрах DATA_PROTECTION_CERTIFICATE_FILE и DATA_PROTECTION_CERTIFICATE_FILE_PASSWORD.
Помимо сертификата, можно задать дополнительные параметры:
•AUTHENTICATION_TOKEN_LIFETIME;
•TOKEN_VALIDATION_CLOCK_SKEW;
•ENCRYPTED_TOKEN;
•TOKEN_VALID_ISSUERS_LIST;
•TOKEN_ADDITIONAL_CERTIFICATES.
Структура токена – JSON Web Token (JWT). Для получения токена необходимо обратиться по адресу:
https://{имя сервера}/Integration/token
Запрос должен пройти любой вид аутентификации. Исключение: нельзя пройти аутентификацию по ранее выданному токену.
Формат HTTP-запроса: чтобы HTTP-запрос прошел аутентификацию, используйте стандартный заголовок Authorization. Поместите в него токен в формате Bearer <token>.
Пример токена, заголовок:
{
"alg": "RS256",
"kid": "D91C6DB6158213A8DC249AFBDF304115FA9A8591",
"x5t": "2RxtthWCE6jcJJr73zBBFfqahZE",
"typ": "JWT"
}
Пример токена, данные:
{
"TenantId": "DirectumRX",
"UserName": "IntegrationUser",
"nbf": 1622442549,
"exp": 1622528949,
"iat": 1622442549,
"iss": "Sungero identity provider",
"aud": "Integration service"
}
Пример HTTP-запроса:
GET /Integration/odata/$metadata HTTP/1.1
Host: DirectumRXServer.com
Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkQ5MUM2REI2MTU4MjEzQThEQzI0OUFGQkRGMzA0MTE1RkE5QTg1OT…
Content-Type: application/json
Accept: application/json
Пример аналогичного запроса, написанного на языке C#:
// Получение токена в сервисе интеграции с помощью базового способа аутентификации.
var httpClient = new HttpClient();
var getTokenUrl = "https://localhost/Integration/token";
var tokenRequest = new HttpRequestMessage(HttpMethod.Get, getTokenUrl);
tokenRequest.Headers.Add("username", "Administrator");
tokenRequest.Headers.Add("password", "11111");
var tokenResponce = await httpClient.SendAsync(tokenRequest);
string token = string.Empty;
if (tokenResponce.IsSuccessStatusCode)
{
Console.WriteLine($"Get token OK");
token = await tokenResponce.Content.ReadAsStringAsync();
}
else
{
Console.WriteLine($"Error: token responce status code '{tokenResponce.StatusCode}'");
return;
}
// Создание запроса с использованием полученного токена.
var scheme = "Bearer";
var requestUrl = "https://localhost/Integration/odata/$metadata/";
var request = new HttpRequestMessage(HttpMethod.Get, requestUrl);
request.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue(scheme, token);
var responce = await httpClient.SendAsync(request);
if (responce.IsSuccessStatusCode)
{
Console.WriteLine("Request OK");
}
else
{
Console.WriteLine($"Error: responce status code '{responce.StatusCode}'");
}
© Компания Directum, 2024 |