.NET 클라이언트 어설 션 생성을 가진 PDND 서비스를위한 OAUTH2 인증 구현.
PIATTAFORMA DIGITALE NAZIONALE DATI (PDND) 는 공공 행정과 민간 법인 간의 데이터 상호 운용성 및 교환을 용이하게하기 위해 설계된 이탈리아 디지털 인프라입니다. 이 플랫폼은 데이터 통합, 액세스 및 관리를위한 안전하고 표준화 된 중앙 집중식 시스템을 제공하여 공개 데이터 공유를 단순화하는 것을 목표로합니다. PDND는 데이터가 액세스 가능하고 신뢰할 수 있으며 재사용 가능하도록하여 공공 부문 내에서 디지털 혁신을 촉진하여보다 효율적인 공공 서비스를 가능하게하고 투명성을 높이며 정부 및 시민 모두를위한 데이터 중심 의사 결정 지원을 지원합니다.
바우처는 간단한 JWT 토큰입니다. 구현 된 인증 흐름은 OAUTH 2.0이며, 이는 Bearer 토큰 사용을위한 RFC6750 및 클라이언트 어설 션을 통한 클라이언트 승인을위한 RFC7521 을 나타냅니다.
유효한 바우처를 얻으려면 먼저 하나 이상의 공개 키를 Interop API 클라이언트에 업로드해야합니다. 첫 번째 단계는 유효한 클라이언트 어설 션을 생성하고 개인 키에 서명하는 것입니다 (PDND Interoperabilità의 클라이언트에 등록 된 공개 키와 일치해야 함). 클라이언트 어설 션은 헤더와 페이로드로 구성됩니다.
사용자는 바우처를 요청합니다. 일단 얻어지면, PDND 상호 운용성 API에 대한 후속 호출에서 권한 부여 헤더로 포함됩니다.
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으로 문의하십시오.