---
title: "Использование плагина OpenID Connect в Apache APISIX для централизованной аутентификации идентификации - API7.ai"
description: "Использование плагина OpenID Connect в Apache APISIX для настройки аутентификации через Okta — это..."
url: "https://api7.ai/ru/blog/how-to-use-apisix-auth-with-okta-2"
---

[Blog](https://api7.ai/ru/blog)

[Products](https://api7.ai/ru/category/products)[Technology](https://api7.ai/ru/category/technology)[Ecosystem](https://api7.ai/ru/category/ecosystem)[Case Study](https://api7.ai/ru/category/usercase)[Team & Community](https://api7.ai/ru/category/community)

Search

⌘ + K

[Blog](https://api7.ai/blog)

Ecosystem

# Использование плагина OpenID Connect в Apache APISIX для централизованной аутентификации идентификации

API7.ai

September 7, 2021

[Ecosystem](https://api7.ai/category/ecosystem)

Использование плагина OpenID Connect для Apache APISIX для настройки аутентификации Okta — это простой трехэтапный процесс. Он позволяет перейти от традиционного режима аутентификации к централизованному режиму аутентификации идентификации. В следующих разделах описаны шаги по настройке аутентификации Okta с использованием плагина OpenID Connect для Apache APISIX.

Централизованный режим аутентификации идентификации, по сравнению с традиционным режимом аутентификации, имеет следующие преимущества:

1. Централизованная аутентификация упрощает процесс разработки приложений.
2. Централизованная аутентификация повышает безопасность бизнеса.

## Предварительные требования

Иметь готовый к использованию аккаунт Okta.

## Шаг 1: Настройка Okta

1. Войдите в свой аккаунт Okta, нажмите "Create App Integration", чтобы создать приложение Okta. ![Create App Integration](https://static.api7.ai/2022/10/03/633a432f3f24b.png?imageMogr2/format/webp)
2. Выберите "OIDC- OpenID Connect" для метода входа и "Web Application" для типа приложения. ![Create a new App Integration](https://static.api7.ai/2022/10/03/633a432f490b8.png?imageMogr2/format/webp)
3. Установите URL-адреса перенаправления для входа и выхода. "Sign-in redirect URIs" — это ссылки, на которые разрешено перенаправление после успешного входа, а "Sign-out redirect URIs" — это ссылки, на которые происходит перенаправление после успешного выхода. В этом примере мы установили оба URL-адреса перенаправления для входа и выхода на <http://127.0.0.1:9080/>. ![Set the redirect URL for login and logout](https://static.api7.ai/2022/10/03/633a432e8c4ee.png?imageMogr2/format/webp)
4. После завершения настроек нажмите "Save", чтобы сохранить изменения. ![save the changes](https://static.api7.ai/2022/10/03/633a432f09398.png?imageMogr2/format/webp)
5. Перейдите на страницу General приложения, чтобы получить следующие конфигурации, которые необходимы для настройки OpenID Connect в Apache APISIX.

- Client ID: Идентификатор приложения, который соответствует client\_id ниже.
- Client secret: Ключ приложения, который соответствует client\_secret ниже.
- Okta domain: Домен, используемый приложением, соответствующий {ISSUER} ниже.

![obtain configuration](https://static.api7.ai/2022/10/03/633a432f0dc24.png?imageMogr2/format/webp)

## Шаг 2: Установка Apache APISIX

### Установка зависимостей

Среда выполнения Apache APISIX требует зависимостей от NGINX и etcd. Перед установкой Apache APISIX установите зависимости в соответствии с используемой операционной системой. Мы предоставляем инструкции по установке зависимостей для CentOS7, Fedora 31 & 32, Ubuntu 16.04 & 18.04, Debian 9 & 10 и MacOS. Подробнее см. [Install Dependencies](https://apisix.apache.org/docs/apisix/install-dependencies/).

### Установка через RPM-пакет (CentOS 7)

Этот метод установки подходит для CentOS 7. Выполните следующую команду для установки Apache APISIX.

```
sudo yum install -y https://github.com/apache/apisix/releases/download/2.7/apisix-2.7-0.x86_64.rpm
```

### Установка через Docker

См. [Installing Apache APISIX with Docker](https://apisix.apache.org/docs/apisix/how-to-build/#installation-via-docker).

### Установка через Helm Chart

См. [Installing Apache APISIX with Helm Chart](https://apisix.apache.org/docs/apisix/how-to-build/#installation-via-helm-chart).

### Установка через исходный код

1. Создайте каталог с именем `apisix-2.7`.

   ```
   mkdir apisix-2.7
   ```

2. Скачайте исходный пакет Apache APISIX Release.

   ```
   wget https://downloads.apache.org/apisix/2.7/apache-apisix-2.7-src.tgz
   ```

   Вы также можете скачать исходный пакет Apache APISIX Release с сайта Apache APISIX. [Apache APISIX Official Website - Download Page](https://apisix.apache.org/downloads/) также предоставляет исходные пакеты для Apache APISIX, APISIX Dashboard и [APISIX Ingress Controller](https://github.com/apache/apisix-ingress-controller).

3. Распакуйте исходный пакет Apache APISIX Release.

   ```
   tar zxvf apache-apisix-2.7-src.tgz -C apisix-2.7
   ```

4. Установите зависимые библиотеки Lua для среды выполнения.

   ```
   # Перейдите в каталог apisix-2.7
   cd apisix-2.7
   # Создайте зависимости
   make deps
   ```

### Инициализация зависимостей

Выполните следующую команду для инициализации конфигурационного файла NGINX и etcd.

```
# инициализация конфигурационного файла NGINX и etcd
make init
```

## Шаг 3: Запуск Apache APISIX и настройка соответствующего маршрута

1. Выполните следующую команду для запуска Apache APISIX.

   ```
   apisix start
   ```

2. Создайте маршрут и настройте плагин OpenID Connect. В следующем примере кода создается маршрут через API администратора Apache APISIX, устанавливая путь к вышестоящему серверу на httpbin.org, простой сервис для получения и ответа на запросы. В дальнейшем будет использоваться страница get httpbin.org. Подробнее см. [http bin get](http://httpbin.org/#/HTTP_Methods/get_get). Для конкретных конфигураций см. [Apache APISIX OpenID Connect Plugin](https://apisix.apache.org/docs/apisix/plugins/openid-connect/).

Конфигурационные поля OpenID Connect перечислены ниже:

| Поле                                     | Значение по умолчанию | Описание                                                                                                                                                                        |
| ---------------------------------------- | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| client\_id                               | ""                    | Идентификатор клиента OAuth.                                                                                                                                                    |
| client\_secret                           | ""                    | Секрет клиента OAuth.                                                                                                                                                           |
| discovery                                | ""                    | Конечные точки обнаружения сервисов для провайдеров идентификации.                                                                                                              |
| scope                                    | openid                | Область ресурсов для доступа.                                                                                                                                                   |
| relm                                     | apisix                | Укажите информацию аутентификации в заголовке ответа WWW-Authenticate.                                                                                                          |
| bearer\_only                             | false                 | Проверять ли токен в заголовке запроса.                                                                                                                                         |
| logout\_path                             | /logout               | URI для выхода.                                                                                                                                                                 |
| redirect\_uri                            | request\_uri          | URI, на который провайдер идентификации перенаправляет обратно, по умолчанию — адрес запроса.                                                                                   |
| timeout                                  | 3                     | Время ожидания запроса, единица измерения — секунды.                                                                                                                            |
| ssl\_verify                              | false                 | Проверять ли SSL-сертификат провайдера идентификации.                                                                                                                           |
| introspection\_endpoint                  | ""                    | URL конечной точки проверки токена провайдера идентификации, который будет извлечен из discovery, если оставить пустым.                                                         |
| introspection\_endpoint\_auth\_method    | client\_secret\_basic | Название метода аутентификации для проверки токена.                                                                                                                             |
| public\_key                              | ""                    | Публичный ключ для токена аутентификации.                                                                                                                                       |
| token\_signing\_alg\_values\_expected    | ""                    | Алгоритм для токенов аутентификации.                                                                                                                                            |
| set\_access\_token\_header               | true                  | Передавать ли токен доступа в заголовке запроса.                                                                                                                                |
| access\_token\_in\_authorization\_header | false                 | Помещать ли токен доступа в заголовок Authorization. Токен доступа помещается в заголовок Authorization, если значение true, и в заголовок X-Access-Token, если значение false. |
| set\_id\_token\_header                   | true                  | Передавать ли ID-токен в заголовке запроса X-ID-Token.                                                                                                                          |
| set\_userinfo\_header                    | true                  | Передавать ли информацию о пользователе в заголовке запроса X-Userinfo.                                                                                                         |

```
curl  -XPOST 127.0.0.1:9080/apisix/admin/routes -H "X-Api-Key: edd1c9f034335f136f87ad84b625c8f1" -d '{
    "uri":"/*",
    "plugins":{
        "openid-connect":{
            "client_id":"{YOUR_CLIENT_ID}",
            "client_secret":"{YOUR_CLIENT_SECRET}",
            "discovery":"https://{YOUR_ISSUER}/.well-known/openid-configuration",
            "scope":"openid profile",
            "bearer_only":false,
            "realm":"master",
            "introspection_endpoint_auth_method":"client_secret_post",
            "redirect_uri":"http://127.0.0.1:9080/"
        }
    },
    "upstream":{
        "type":"roundrobin",
        "nodes":{
            "httpbin.org:80":1
        }
    }
}'
```

## Проверка

1. Перейдите по адресу "<http://127.0.0.1:9080/get>", и страница будет перенаправлена на страницу входа Okta, так как плагин OpenID Connect включен. ![visit Okta login page](https://static.api7.ai/2022/10/03/633a432ea1fd3.png?imageMogr2/format/webp)

2. Введите имя пользователя и пароль для аккаунта Okta и нажмите "Sign In", чтобы войти в свой аккаунт Okta.

3. После успешного входа вы сможете получить доступ к странице get на "httpbin.org". Страница "httpbin.org/get" вернет запрошенные данные с X-Access-Token, X-Id-Token и X-Userinfo, как показано ниже.

   ```
   "X-Access-Token": "******Y0RPcXRtc0FtWWVuX2JQaFo1ZVBvSlBNdlFHejN1dXY5elV3IiwiYWxnIjoiUlMyNTYifQ.***TVER3QUlPbWZYSVRzWHRxRWh2QUtQMWRzVDVGZHZnZzAiLCJpc3MiOiJodHRwczovL3FxdGVzdG1hbi5va3RhLmNvbSIsImF1ZCI6Imh0dHBzOi8vcXF0ZXN0bWFuLm9rdGEuY29tIiwic3ViIjoiMjgzMDE4Nzk5QHFxLmNvbSIsImlhdCI6MTYyODEyNjIyNSwiZXhwIjoxNjI4MTI5ODI1LCJjaWQiOiIwb2ExMWc4ZDg3TzBGQ0dYZzY5NiIsInVpZCI6IjAwdWEwNWVjZEZmV0tMS3VvNjk1Iiwic2NwIjpbIm9wZW5pZCIsInByb2Zpb***.****iBshIcJhy8QNvzAFD0fV4gh7OAdTXFMu5k0hk0JeIU6Tfg_Mh-josfap38nxRN5hSWAvWSk8VNxokWTf1qlaRbypJrKI4ntadl1PrvG-HgUSFD0JpyqSQcv10TzVeSgBfOVD-czprG2Azhck-SvcjCNDV-qc3P9KoPQz0SRFX0wuAHWUbj1FRBq79YnoJfjkJKUHz3uu7qpTK89mxco8iyuIwB8fAxPMoXjIuU6-6Bw8kfZ4S2FFg3GeFtN-vE9bE5vFbP-JFQuwFLZNgqI0XO2S7l7Moa4mWm51r2fmV7p7rdpoNXYNerXOeZIYysQwe2_L****",
   "X-Id-Token": "******aTdDRDJnczF5RnlXMUtPZUtuSUpQdyIsImFtciI6WyJwd2QiXSwic3ViIjoiMDB1YTA1ZWNkRmZXS0xLdW82OTUiLCJpc3MiOiJodHRwczpcL1wvcXF0ZXN0bWFuLm9rdGEuY29tIiwiYXVkIjoiMG9hMTFnOGQ4N08wRkNHWGc2OTYiLCJuYW1lIjoiUGV0ZXIgWmh1IiwianRpIjoiSUQuNGdvZWo4OGUyX2RuWUI1VmFMeUt2djNTdVJTQWhGNS0tM2l3Z0p5TTcxTSIsInZlciI6MSwicHJlZmVycmVkX3VzZXJuYW1lIjoiMjgzMDE4Nzk5QHFxLmNvbSIsImV4cCI6MTYyODEyOTgyNSwiaWRwIjoiMDBvYTA1OTFndHAzMDhFbm02OTUiLCJub25jZSI6ImY3MjhkZDMxMWRjNGY3MTI4YzlmNjViOGYzYjJkMDgyIiwiaWF0IjoxNjI4MTI2MjI1LCJhdXRoX3RpbWUi*****",
   "X-Userinfo": "*****lfbmFtZSI6IlpodSIsImxvY2FsZSI6ImVuLVVTIiwicHJlZmVycmVkX3VzZXJuYW1lIjoiMjgzMDE4Nzk5QHFxLmNvbSIsInVwZGF0ZWRfYXQiOjE2MjgwNzA1ODEsInpvbmVpbmZvIjoiQW1lcmljYVwvTG9zX0FuZ2VsZXMiLCJzdWIiOiIwMHVhMDVlY2RGZldLTEt1bzY5NSIsImdpdmVuX25hbWUiOiJQZXRlciIsIm5hbWUiOiJQZXRl****"
   ```

**X-Access-Token**: Apache APISIX помещает токен доступа, полученный от провайдера пользователя, в заголовок запроса X-Access-Token, опционально через access\_token\_in\_authorization\_header в конфигурации плагина в заголовок Authorization.

![X-Access-Token](https://static.api7.ai/2022/10/03/633a432f58583.png?imageMogr2/format/webp)

**X-Id-Token**: Apache APISIX получит Id-токен от провайдера пользователя через кодировку base64 и поместит его в заголовок запроса X-Id-Token. Вы можете выбрать, включать ли эту функцию через set\_id\_token\_header в конфигурации плагина, по умолчанию она включена.

![X-Id-Token](https://static.api7.ai/2022/10/03/633a432f4eb4f.png?imageMogr2/format/webp)

**X-Userinfo**: Apache APISIX получит информацию о пользователе от провайдера пользователя и поместит ее в X-Userinfo после кодирования Base64. Вы можете выбрать, включать ли эту функцию через set\_userinfo\_header в конфигурации плагина, по умолчанию она включена.

![X-Userinfo](https://static.api7.ai/2022/10/03/633a432f150b4.png?imageMogr2/format/webp)

Как видите, Apache APISIX передает заголовки запроса X-Access-Token, X-Id-Token и X-Userinfo вышестоящему серверу. Вышестоящий сервер может разобрать эти заголовки, чтобы получить информацию о пользователе и метаданные.

Мы показали процесс построения централизованной аутентификации идентификации от Okta непосредственно в шлюзе Apache APISIX. Легко зарегистрировать бесплатный аккаунт разработчика Okta, чтобы начать. Наш подход снижает нагрузку на разработчиков и обеспечивает безопасный и оптимизированный опыт.

## О Okta

Okta — это настраиваемое, безопасное и готовое решение для добавления услуг аутентификации и авторизации в ваши приложения. Получите масштабируемую аутентификацию, встроенную прямо в ваше приложение, без затрат на разработку, рисков безопасности и обслуживания, связанных с самостоятельным кодированием. Вы можете подключить любое приложение на любом языке или стеке к Okta и определить, как вы хотите, чтобы ваши пользователи входили в систему. Каждый раз, когда пользователь пытается пройти аутентификацию, Okta проверит его личность и отправит необходимую информацию обратно в ваше приложение.

## О Apache APISIX

Apache APISIX — это динамический, высокопроизводительный API-шлюз в реальном времени. Apache APISIX предоставляет богатые функции управления трафиком, такие как балансировка нагрузки, динамический вышестоящий сервер, канареечные выпуски, разрыв цепи, аутентификация, наблюдаемость и многое другое. Вы можете использовать Apache APISIX для обработки традиционного север-южного трафика, а также восточно-западного трафика между сервисами. Он также может использоваться как контроллер ingress для k8s.

Сотни компаний по всему миру используют Apache APISIX, включая финансы, интернет, производство, розничную торговлю, операторов, таких как NASA, Европейская цифровая фабрика, TravelSky, Tencent, Huawei, Weibo, China Mobile, Taikang, 360 и другие.

Github: <https://github.com/apache/apisix>

Сайт: [https://apisix.apache.org](https://apisix.apache.org/)

Tags:

[APISIX Basics](https://api7.ai/tags/apisix-basics)

[Authentication & Authorization](https://api7.ai/tags/authentication-&-authorization)

[Plugin](https://api7.ai/tags/plugin)

Share article link

Share

Related Posts

[![Интеграция Splunk HTTP Event Collector с Apache APISIX](https://static.api7.ai/2022/11/18/6377314b77522.png)](https://api7.ai/blog/integrating-splunk-http-event-collector-with-apache-apisix)

## [Интеграция Splunk HTTP Event Collector с Apache APISIX](https://api7.ai/blog/integrating-splunk-http-event-collector-with-apache-apisix)

[![Forward-Auth, еще один выбор для функции аутентификации](https://static.api7.ai/2022/11/18/63772e00affaf.png)](https://api7.ai/blog/forward-auth-another-choice-for-authentication-function)

## [Forward-Auth, еще один выбор для функции аутентификации](https://api7.ai/blog/forward-auth-another-choice-for-authentication-function)

Table of Contents

- [Предварительные требования](#%D0%BF%D1%80%D0%B5%D0%B4%D0%B2%D0%B0%D1%80%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5-%D1%82%D1%80%D0%B5%D0%B1%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)

- [Шаг 1: Настройка Okta](#%D1%88%D0%B0%D0%B3-1-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-okta)

- [Шаг 2: Установка Apache APISIX](#%D1%88%D0%B0%D0%B3-2-%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-apache-apisix)

  - [Установка зависимостей](#%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B7%D0%B0%D0%B2%D0%B8%D1%81%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B5%D0%B9)
  - [Установка через RPM-пакет (CentOS 7)](#%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D1%87%D0%B5%D1%80%D0%B5%D0%B7-rpm-%D0%BF%D0%B0%D0%BA%D0%B5%D1%82-centos-7)
  - [Установка через Docker](#%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D1%87%D0%B5%D1%80%D0%B5%D0%B7-docker)
  - [Установка через Helm Chart](#%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D1%87%D0%B5%D1%80%D0%B5%D0%B7-helm-chart)
  - [Установка через исходный код](#%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D1%87%D0%B5%D1%80%D0%B5%D0%B7-%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%BD%D1%8B%D0%B9-%D0%BA%D0%BE%D0%B4)
  - [Инициализация зависимостей](#%D0%B8%D0%BD%D0%B8%D1%86%D0%B8%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F-%D0%B7%D0%B0%D0%B2%D0%B8%D1%81%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B5%D0%B9)

- [Шаг 3: Запуск Apache APISIX и настройка соответствующего маршрута](#%D1%88%D0%B0%D0%B3-3-%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA-apache-apisix-%D0%B8-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-%D1%81%D0%BE%D0%BE%D1%82%D0%B2%D0%B5%D1%82%D1%81%D1%82%D0%B2%D1%83%D1%8E%D1%89%D0%B5%D0%B3%D0%BE-%D0%BC%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%B0)

- [Проверка](#%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0)

- [О Okta](#%D0%BE-okta)

- [О Apache APISIX](#%D0%BE-apache-apisix)

## Related Posts

[![Политика авторизации Apache APISIX: Защитите свои API](https://static.api7.ai/uploads/2024/12/24/w5yfe0Nu_apisix-authorization-policy.png)](https://api7.ai/ru/blog/apisix-permission-policy)

Technology

April 21, 2023

#### [Политика авторизации Apache APISIX: Защитите свои API](https://api7.ai/ru/blog/apisix-permission-policy)

Политики управления авторизацией Apache APISIX могут защитить безопасность ваших API и обеспечить безопасную и стабильную работу ваших систем.

[APISIX Basics](https://api7.ai/tags/apisix-basics)

[Authentication & Authorization](https://api7.ai/tags/authentication-&-authorization)

[API Gateway Policy](https://api7.ai/tags/api-gateway-policy)

[![Зачем вам нужен Apache APISIX при использовании Amazon Lambda](https://static.api7.ai/uploads/2024/12/25/PGShc0sm_apisix-aws-lambda.png)](https://api7.ai/ru/blog/why-do-you-need-apache-apisix-when-using-amazon-lambda)

Ecosystem

December 9, 2022

#### [Зачем вам нужен Apache APISIX при использовании Amazon Lambda](https://api7.ai/ru/blog/why-do-you-need-apache-apisix-when-using-amazon-lambda)

Следуя трендам облачных технологий, APISIX поддерживает serverless-вычисления, предоставляя плагины для serverless, azure-functions, openwhisk и openfunction.

[APISIX Basics](https://api7.ai/tags/apisix-basics)

[Amazon Lambda](https://api7.ai/tags/amazon-lambda)

[Plugin](https://api7.ai/tags/plugin)

[![Как создать плагин для Apache APISIX с нуля до готовности?](https://static.api7.ai/2022/11/18/63772ca27585f.png)](https://api7.ai/ru/blog/how-to-build-an-apache-apisix-plugin-from-0-to-1)

Ecosystem

February 16, 2022

#### [Как создать плагин для Apache APISIX с нуля до готовности?](https://api7.ai/ru/blog/how-to-build-an-apache-apisix-plugin-from-0-to-1)

За последние несколько месяцев пользователи сообщества добавили множество плагинов в ...

[APISIX Basics](https://api7.ai/tags/apisix-basics)

[Plugin](https://api7.ai/tags/plugin)
