Home » Краткое руководство по использованию API управления контентом и OpenID Conn

Краткое руководство по использованию API управления контентом и OpenID Conn

Введение

Управление контентом в Optimizely CMS становится более эффективным и оптимизированным благодаря возможностям API управления контентом.

Оптимизировать API управления контентом добавляет конечные точки REST для основных операций управления контентом, таких как:

  • Создание объектов контента
  • Изменение существующих объектов контента
  • Удаление объектов контента
  • Получить черновые объекты контента
  • Перемещение объектов контента

REST API полезен для передачи внешнего контента в Optimizely без необходимости развертывания специального кода интеграции в системе управления контентом Optimizely (CMS).

В этом кратком руководстве я расскажу, как настроить решение для создания контента с помощью API.

Предварительные условия

Прежде чем приступить к процессу, убедитесь, что у вас есть следующее:

  • Активный экземпляр Optimizely CMS (для настройки сайта Alloy обратитесь к моему руководству). здесь).
  • Знакомство с инструментом запроса API, таким как Postman.
  • Хорошее понимание структуры и типов контента вашей CMS.

Шаг 1. Установите и настройте API управления контентом

Сначала давайте настроим API управления контентом. Если вы используете Visual Studio, вы можете установить ее через диспетчер пакетов или через интерфейс командной строки с помощью этой команды:

dotnet add package EPiServer.ContentManagementApi

После установки измените класс запуска, включив в него базовую конфигурацию. в ConfigureServices метод, добавьте следующую строку:

services.AddContentManagementApi(o => o.DisableScopeValidation = true);

Затем создайте и запустите свое решение с помощью:

dotnet run

Шаг 2. Проверьте конечную точку

После установки API управления контентом вы можете протестировать конечную точку с помощью Postman. Отправьте простой POST-запрос на /api/episerver/v3.0/contentmanagement. Поскольку мы не добавили никаких параметров, ожидайте код состояния 400 Bad Request с конкретным ответом JSON.

{
    "errors": {
        "filename": [
            "The filename field is required."
        ],
        "content-Type": [
            "The contentType field is required."
        ]
    },
    "type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
    "title": "One or more validation errors occurred.",
    "status": 400,
    "traceId": "00-b2f4877cb70b04fc20ea6fc0dfe1d2fe-d37b0cf2e4dc9458-00",
    "code": "InvalidModel"
}

Этот ответ сообщает нам, что конечная точка работает. В качестве альтернативы это привело бы к коду состояния 404. На этом этапе мы можем попробовать добавить контент в Optimizely CMS через Postman. Используйте предоставленное тело JSON, но из-за разрешений вы, скорее всего, столкнетесь со статусом 401.

{
  "name": "Text Block (Content Management API)",
  "language": {
      "name": "en"
  },
  "contentType": [
      "Block",
      "EditorialBlock"
  ],
  "parentLink": {
      "id": "33"
  },
  "mainBody": {
      "value": "

Hello World

" }, "status": "Published" }

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

{
    "type": "https://tools.ietf.org/html/rfc7235#section-3.1",
    "title": "Unauthorized",
    "status": 401,
    "detail": "Access was denied to content 33. The required access level was "Create, Publish".",
    "instance": "/api/episerver/v3.0/contentmanagement",
    "traceId": "00-c91883ef32f39b8dda0571df62c44b7b-d48fe0471f6254da-00"
}

В целях тестирования вы можете временно предоставить права доступа «Всем» для создания и публикации страниц. После внесения этого изменения повторно запустите запрос. Теперь вы должны получить код состояния 201 (Успех) с контентом, успешно созданным в CMS.

Read more:  Мировой рекорд по количеству людей, катающихся на лыжах в джинсах, установлен в Джексон-Хоул, штат Вайоминг: -

Шаг 3. Аутентификация API через OpenID Connect

В реальном мире предоставление доступа «Всем» к публикации контента неприемлемо. Чтобы гарантировать, что уполномоченные лица/службы создают и публикуют контент, нам необходимо аутентифицировать запросы API управления контентом с помощью OpenID Connect и токенов носителя (JWT). Вот как:

  • Установите пакет OpenIDConnect NuGet с помощью этой команды:
    dotnet add package EPiServer.OpenIDConnect.UI
  • Измените класс Startup, чтобы настроить этот пакет и обеспечить его поддержку API управления контентом. Обновите код следующим образом:
    services.AddContentManagementApi(OpenIDConnectOptionsDefaults.AuthenticationScheme, options =>
    {
        options.DisableScopeValidation = true;
    });
    
    services.AddOpenIDConnect(
        useDevelopmentCertificate: true,
        signingCertificate: null,
        encryptionCertificate: null,
        createSchema: true
    );
    
    services.AddOpenIDConnectUI();
    
  • После сохранения файла создайте и запустите решение и войдите в режим администратора Optimizely. Найдите «OpenID Connect» в настройках, создайте новое приложение (установите области как «epi_content_management»).
  • Проверьте, работает ли все это, выполнив POST-запрос в Postman, чтобы /api/episerver/connect/token со следующими параметрами:
    • client_id: API-клиент
    • client_secret: Суперсекрет
    • тип_гранта: client_credentials
  • Вы получите токен ограниченного по времени доступа.

Зайдя так далеко и успешно сгенерировав токен на предъявителя, мы должны предоставить нашему вновь созданному клиенту разрешения на создание и публикацию контента. Мы делаем это, управляя правами доступа в Optimizely. Удалите дополнительные права, предоставленные группе «Все», и добавьте их в список api-client вместо этого с теми же правами.

Наконец, скопируйте токен доступа из Postman и сделайте еще один запрос POST к /api/episerver/v3.0/contentmanagementна этот раз также устанавливая токен авторизации.

Вот и все! Теперь мы безопасно создаем контент через API управления контентом, используя токен носителя JWT.

** Для дополнительных мер безопасности вы можете добавить некоторые дополнительные политики CORS в свое решение Optimizely, чтобы только определенные службы могли вызывать запросы API управления контентом или даже блокировать API с помощью ограничений IP.

Заключение

API управления контентом вместе с API определений контента представляют собой довольно мощные инструменты, их несложно настроить и они имеют множество вариантов использования, например, API управления контентом, который мы можем довольно легко использовать для процессов миграции и импорта большого количества контента в CMS в оптом все программно. После недавнего анонса SaaS CMS, предлагающего API определений контента, он весьма полезен при создании типов контента и чего-то, что можно довольно легко контролировать исходным кодом, поэтому определенно стоит обратить на это внимание и попробовать.

Рекомендации

  1. Начните работу с API управления контентом (optimizely.com)
  2. Аутентификация API (optimizely.com)
  3. Примеры API управления контентом (optimizely.com)

01 ноября 2023 г.

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.