Подключение Moodle к LTI

@david Дэвид, не могли бы вы поделиться со мной экземпляром конфигурации? Я многократно пытался интегрировать Discourse с Moodle 3.10, но безрезультатно. Всегда появляется сообщение:

OpenSSL::PKey::RSAError (Neither PUB key nor PRIV key: nested asn1 error)
lib/middleware/omniauth_bypass_middleware.rb:50:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:355:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
lib/middleware/request_tracker.rb:187:in `call'

Что вы ввели в настройку «публичный ключ платформы»? Если я правильно помню, Moodle по умолчанию предоставляет URL JWKS, который этот плагин не поддерживает.

Должна быть возможность найти где-то сырой сертификат, который вы можете скопировать и вставить в Discourse,

@david Спасибо за ответ. Да, в Moodle отображается Public keyset URL: https://mysiet.com/mod/lti/certs.php. Я открыл эту ссылку в браузере, и там было показано следующее:

{
    "keys": [
        {
            "kty": "RSA",
            "alg": "RS256",
            "kid": "1371e22ce81f1dbb936a",
            "e": "AQAB",
            "n": "xXOfRS1UronVdVUEal0jyIhyNkAcbCRb6K2uzLsoQgRAaqA2ixbshCTWW_Yj-ZoJgg7UoruO65TB5EIldMyPJbYjYoMF0rB5a-wcvEhtWxfLs8FsDNLM9czjYXZUXBJ6sxIGNp-9Wp4c6PaecvXDfc4bJoHU8Ee5WzUk2XuX8dXX4jx8ipwzRa8qaQT-0cIPnZw4LmkPiTgn-gA-LuqjG2w9awwjnWTuZbTNPTphgPO9FD4lD_dAY3biURU_lEyJXflqFYwbrpja-b8y23qixwiHEYsM3_2F5D-DrI3Nsty219-ALDmJ0wY1hnr4p2NfwYZr_d2YjpIiJW_8iW3SRQ",
            "use": "sig"
        }
    ]
}

Я скопировал значение поля “n” из JSON (самое длинное) в Discourse. Но ошибка осталась прежней.

Я думаю, что простого копирования значения n будет недостаточно — для Discourse нужен ключ в формате PEM. В долгосрочной перспективе мы, возможно, сможем добавить поддержку JWK, но в краткосрочной вы сможете заставить это работать, преобразовав ключ.

Существуют онлайн-инструменты для конвертации из формата JWK в PEM. Вот один из них. (Очевидно, я не могу гарантировать безопасность этих онлайн-инструментов, поэтому убедитесь, что вставляете в них только общедоступную информацию)

Как только у вас будет ключ в формате PEM (начинающийся с -----BEGIN PUBLIC KEY-----), Discourse должен его принять.