+++
title = "Аутентификация HTTP API"
description = "Harvest Аутентификация HTTP API"
keywords = ["harvest", "http", "documentation", "api", "authentication"]
aliases = ["/docs/harvest/latest/http_api/authentication/"]
+++

# API аутентификации

## Токены

В настоящее время вы можете пройти аутентификацию с помощью "токена API" или с помощью "Сессионного файла cookie" (приобретенного с помощью обычного входа в систему или OAuth).

## Заголовок X-Harvest-Org-Id

**X-Harvest-Org-Id** - необязательное свойство, указывающее организацию, к которой применяется действие. Если он не задан, созданный ключ принадлежит текущей контекстной организации. Используйте этот заголовок во всех запросах, кроме запросов, касающихся администратора.
**Пример ответа:**

```http
POST /api/auth/keys HTTP/1.1
Accept: application/json
Content-Type: application/json
X-Harvest-Org-Id: 2
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk

{
  "name": "mykey",
  "role": "Admin",
  "secondsToLive": 86400
}
```


## Базовая Аутентификация

Если включена базовая аутентификация (она включена по умолчанию), то вы можете аутентифицировать свой HTTP-запрос с помощью
стандартной базовой аутентификации. Базовая аутентификация также будет проверять подлинность пользователей LDAP.

пример завитка:
```bash
?curl http://admin:admin@localhost:3000/api/org
{"id":1,"name":"Main Org."}
```

## Создать токен API

Откройте боковое меню, щелкните раскрывающийся список организации и выберите опцию "Ключи API".

![](/![](/ статический/img/docs/v2/org выпадающий список_api_keys.png)

Вы используете токен во всех запросах в заголовке "Авторизация", например:

**Пример**:

```http
GET http://your.harvest.com/api/dashboards/db/mydash HTTP/1.1
Accept: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```

Значение заголовка `Authorization` должно быть `Bearer <ваш ключ api>`.

Токен API также может быть передан в качестве базового пароля авторизации со специальным именем пользователя "api_key":

пример завитка:
```bash
?curl http://api_key:eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk@localhost:3000/api/org
{"id":1,"name":"Main Org."}
```

# Аутентификация HTTP-ресурсов / действий

## Ключи Api

`GET /api/auth/keys`

**Пример ответа:**

```http
GET /api/auth/keys HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```

Параметры запроса:

- `- `включить истекший срок действия`: логическое значение. включить список ключей с истекшим сроком действия. Необязательный.

**Пример ответа**:

```http
HTTP/1.1 200
Content-Type: application/json

[
  {
    "id": 3,
    "name": "API",
    "role": "Admin"
  },
  {
    "id": 1,
    "name": "TestAdmin",
    "role": "Admin",
    "expiration": "2019-06-26T10:52:03+03:00"
  }
]
```

## Создать ключ API

`POST /api/auth/keys`

**Пример ответа:**

```http
POST /api/auth/keys HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk

{
  "name": "mykey",
  "role": "Admin",
  "secondsToLive": 86400
}
```

Схема тела JSON:

- **имя** – Имя ключа
- **роль** – Задает уровень доступа/роль Harvest на для ключа. Может иметь одно из следующих значений: `Просмотрщик`, `Редактор` или "Администратор".
- **secondsToLive** – Устанавливает срок действия ключа в секундах. Это необязательно. Если это положительное число, то устанавливается срок действия ключа. Если он равен нулю, нулю или полностью опущен (если не задана опция конфигурации `api_key_max_seconds_to_live`), срок действия ключа никогда не истечет.

Состояния ошибок:

- **400** – Задано значение `api_key_max_seconds_to_live`, но не указано значение `Secondstolive` или значение `Secondstolive` больше этого значения.
- **500** – Ключ не удалось сохранить в базе данных.

**Пример ответа**:

```http
HTTP/1.1 200
Content-Type: application/json

{"name":"mykey","key":"eyJrIjoiWHZiSWd3NzdCYUZnNUtibE9obUpESmE3bzJYNDRIc0UiLCJuIjoibXlrZXkiLCJpZCI6MX1=","id":1}
```

## Удалить ключ API

`DELETE /api/auth/keys/:id`

**Пример ответа:**

```http
DELETE /api/auth/keys/3 HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```
**Пример ответа**:

```http
HTTP/1.1 200
Content-Type: application/json

{"message":"API key deleted"}
```
