.NET реализация аутентификации OAUTH2 для службы PDND с генерацией утверждений клиента.
Piattaforma Digitale Nazionale Dati (PDND) представляет собой итальянскую цифровую инфраструктуру, предназначенную для облегчения совместимости данных и обмена между государственными администрациями и частными организациями. Платформа направлена на то, чтобы упростить обмен публичными данными путем предоставления безопасной, стандартизированной и централизованной системы для интеграции, доступа и управления данных. PDND способствует цифровому преобразованию в государственном секторе, обеспечивая доступность данных, надежных и повторно используемых, обеспечивая более эффективные государственные услуги, повышая прозрачность и поддерживая принятие решений, управляемые данными как для правительства, так и для граждан.
Ваучеры - это простые токены JWT. Реализированный поток аутентификации - OAUTH 2.0, который относится к RFC6750 для использования токенов с предъявителями и RFC7521 для авторизации клиента посредством утверждения клиента.
Чтобы получить действительный ваучер, вы должны сначала загрузить хотя бы один открытый ключ к клиенту API Interop. Первый шаг - создать действительное утверждение клиента и подписать его с вашим закрытым ключом (который должен соответствовать открытому ключу, зарегистрированному с клиентом на PDND Interoperabilità). Утверждение клиента состоит из заголовка и полезной нагрузки.
Пользователь запрашивает ваучер. После получения они включают его в качестве заголовка авторизации в последующие вызовы в API взаимодействия PDND.
Чтобы правильно настроить и использовать генератор утверждений клиента в вашем приложении ASP.NET Core, выполните следующие действия:
"ClientAssertionConfig": {
"ServerUrl": "https://test-server-url.com",
"KeyId": "ZmYxZGE2YjQtMzY2Yy00NWI5LThjNGItMDJmYmQyZGIyMmZh",
"Algorithm": "RS256",
"Type": "at+jwt",
"ClientId": "9b361d49-33f4-4f1e-a88b-4e12661f2309",
"Issuer": "interop.pagopa.it",
"Subject": "9b361d49-33f4-4f1e-a88b-4e12661f2309",
"Audience": "https://erogatore.example/ente-example/v1",
"PurposeId": "1b361d49-33f4-4f1e-a88b-4e12661f2300",
"KeyPath": "C:/Keys/private.pem",
"Duration": "600"
}, builder . Services . AddPDNDClientAssertionServices ( ) ; Затем вы можете использовать ClientAssertionGeneratorService , который предоставляет следующие методы:
GetClientAssertionAsyncGetTokenAsync(clientAssertion)Этот проект включает в себя тестовое приложение, PdndClientAssertionGenerator.API , предназначенное для того, чтобы помочь вам протестировать программное обеспечение с вашей собственной конфигурацией. Это приложение действует как песочница, где вы можете проверить поведение компонентов PdndclientAssertionGenerator.
Конфигурация: Обновите настройки конфигурации в файле appsettings.json или через переменные среды, чтобы соответствовать вашему конкретному варианту использования и среде.
Запуск тестового приложения:
dotnet run --project src/PDNDClientAssertionGenerator.Api/PDNDClientAssertionGenerator.Api.csproj Сценарии тестирования: как только приложение запускается, вы можете использовать различные GetClientAssertion и GetToken , чтобы проверить функциональность программного обеспечения в различных конфигурациях.
Спасибо за рассмотрение помощи в исходном коде! Если вы хотите внести свой вклад, пожалуйста, разжигайте, исправляйте, совершайте и отправляйте запрос на привлечение, чтобы сопровождающие просмотрели и объединялись в основную базу кода.
Исходный код репозитория доступен по лицензии MIT, см. Лицензию в источнике.
Пожалуйста, свяжитесь с Francesco.delre.87 [at] gmail.com для любых подробностей.