ASP에서 인증서 인증을 설정하는 간단한 3단계.그물심

ASP에서 간단하지만 안전한 인증 방법을 설정하는 방법을 생각해 보셨습니까?순핵심?읽어라!
이 문서는 ASP에서 인증서 기반 인증을 구성하는 데 필요한 최소 단계를 제공하기 위한 것입니다.순핵심.
이 문서의 마지막 부분에서 GitHub repo 테스트에 대한 링크를 포함하여 더 자세한 자원 목록을 제공합니다.

인증서 인증은 누구에게 제공됩니까?


다음은 인증서 기반 인증을 통해 얻을 수 있는 몇 가지 일반적인 시나리오입니다.
  • 사내 네트워크 환경에서 사용자 인증
  • 어플리케이션 또는 API 간 통신
  • 서버 리소스 액세스를 위한 IoT 장치 인식
  • 구성 단계


    3단계는 다음과 같습니다.
  • 구성 서버(IIS)
  • 자체 발급된 인증서 작성 및 설치
  • ASP를 설정합니다.인증서 인증을 위한 NET Core 어플리케이션
  • 1단계: IIS 구성


    클라이언트 인증서의 실제 검증 및 검증은 IIS 내부에서 수행됩니다.따라서 인증서를 식별하고 수락하기 위해 IIS를 올바르게 구성해야 합니다.
    IIS 관리자를 엽니다.설정할 웹 응용 프로그램을 찾습니다.기능 보기에서 SSL 설정을 엽니다.

    SSL 설정에서 SSL 필요 옆에 있는 확인란을 선택하고 클라이언트 인증서: 필요 옵션을 선택합니다.
    이것은 IIS가 클라이언트 인증서를 수락하고 ASP에 요청을 전달할 수 있도록 하기 전에 이를 검증하도록 지시할 것입니다.NET 핵심 어플리케이션
    주의: 제 테스트 설정은 IIS을 사이트의 호스트로 사용합니다.Kestrel 위탁 관리 프로그램을 사용하고 있다면 my example repo 의 Kestrel 설정 코드를 참고하거나 공식 Microsoft documentation 을 보십시오.

    2단계: 클라이언트 인증서 설치


    다음은 클라이언트 인증서를 준비해야 합니다.가장 간단한 선택은 브라우저 Trusted CA(GoDaddy, Comodo 등)로 발급된 인증서를 사용하는 것입니다.그러나 내부 네트워크 응용 프로그램에 대해서는 자가 서명 인증서를 안전하게 사용할 수 있습니다.
    우리는 두 단계로 나누어 자체 서명 인증서의 설치를 완성할 것이다.첫 번째 단계에서, 우리는 새로운 자가 서명 클라이언트 인증서를 발표할 것이다.그런 다음 두 번째 단계에서는 인증서를 웹 서버에서 신뢰합니다.
    다음은 새 자가 서명 클라이언트 인증서(유효기간 2년)를 생성하고 사용자의 개인 인증서 저장소에 저장하는 PowerShell 스크립트입니다.
    New-SelfSignedCertificate -certstorelocation cert:\CurrentUser\my `
        -Subject "Test User" -FriendlyName "Test client certificate" `
        -NotAfter (Get-Date).AddYears(2) -KeyUsageProperty Sign `
        -KeyUsage CertSign, CRLSign, DigitalSignature
    
    [사용자 인증서] 제어판에는 인증서 저장소에 새 인증서가 만들어진 것을 볼 수 있습니다Personal.

    클라이언트 인증서의 공개 키를 .cer 파일로 내보낼 수 있습니다.
    IIS가 설치된 웹 서버에서는 CER 파일에 저장된 인증서를 설치하고 컴퓨터 인증서Trusted roots 저장소에 보관해야 합니다.

    위대하다우리는 클라이언트와 서버에서 사용할 수 있는 클라이언트 인증서를 이미 준비했다.

    3단계: ASP.NET 핵심 인증 설정


    마지막으로 ASP에서 인증서 인증을 설정합니다.NET 핵심 어플리케이션
    인증서 인증에 대한 지원은 별도의 NuGet 패키지에 있습니다.따라서 먼저 Microsoft.AspNetCore.Authentication.Certificate 패키지를 애플리케이션에 추가합니다.
    인증서에 대한 지원이 추가되었습니다. 나머지 유일한 단계는 인증 파이프를 정확하게 설정하는 것입니다.이를 위해 Startup.ConfigureServices 메서드에는 다음 코드가 포함되어 있습니다.
    services
        .AddAuthentication(CertificateAuthenticationDefaults.AuthenticationScheme)
        .AddCertificate(options =>
        {
            options.AllowedCertificateTypes = CertificateTypes.All;
        });
    
    마이크로 인증서 인증 프로세서의 행동을 허용하는 몇 가지 옵션이 있습니다.우리의 예에서, 우리는 체인 인증서와 자체 서명 인증서만 받아들일 수 있도록 AllowedCertificateTypes 옵션만 변경했습니다. (기본적으로 체인 인증서만 받아들일 수 있습니다.)Microsoft.AspNetCore.Authentication.Certificate 패키지는 ASP에서 도입되었습니다.NET 코어 v30. ASP 버전을 사용하는 경우NET Core는 3.0 이전 버전이므로 Barry Dorrans 에서 idunno.Authentication.Certificate 라는 호환 패키지를 만들어야 합니다.
    또한 ASP에 인증 중간부품을 추가하는 것도 잊지 마십시오.NET 코어에서 처리 파이프를 요청합니다.Startup.Configure 메소드에서 다음을 수행합니다.
    app.UseAuthentication();
    

    움직이는 거 봤어요.


    브라우저(예: Chrome)에서 웹 API를 호출하면 클라이언트 인증서를 요청합니다.

    그런 다음 웹 서버는 인증서를 확인하고 확인되면 ASP로 요청을 보냅니다.NET 핵심 웹 API예제 응답은 다음과 같습니다.
    Test API call successful! Certificate Subject Name: Test User
    
    다른 한편, 인증서가 지정되어 있지 않거나 유효하지 않거나 신뢰할 수 없는 인증서를 선택하면 오류 응답이 표시됩니다.
    HTTP Error 403
    
    또는
    ERR_BAD_SSL_CLIENT_AUTH_CERT
    
    my GitHub repo의 전체 예를 보려면 다음과 같이 하십시오.

    jd cz / AspNetCertTest



    AspNetCertTest


    이것은 나의 블로그 게시물3 Easy Steps to Set Up Certificate Authentication in ASP.NET Core의 환매 예이다.이 예제에서는 ASP의 서버 호스트로 Kestrel을 사용합니다.NET 핵심 어플리케이션
    내 블로그My Dev Tricks의 글을 보면 상세한 정보를 알 수 있다.
    View on GitHub

    기타 자원


    Microsoft 설명서에서 인증서 인증을 소개하는 기사:
    Configure certificate authentication in ASP.NET Core
    인증서 기반 인증을 사용하는 일반적인 이점을 간결하게 설명합니다.
    What Is Certificate-Based Authentication and Why Should I Use It?

    결론


    이 세 가지 간단한 절차를 사용하면 ASP에 안전하게 접근할 수 있다.NET 핵심 컨트롤러, 클라이언트 인증서를 가진 클라이언트만 컨트롤러 기능을 호출할 수 있습니다.
    전문 알림: 더욱 안전한 설정을 얻기 위해 AddCertificate() 인증서 속성을 바탕으로 사용자 정의 검증을 할 수 있는 다양한 옵션을 호출할 수 있습니다.
    클라이언트 인증서를 사용하여 인증하는 것이 유용하다고 생각합니까?댓글로 알려주세요.또한 이 글을 좋아하신다면 친구와 동료와 공유해 주십시오!
    만약 네가 이 문장이 매우 재미있다고 생각한다면 반드시 내 블로그mydevtricks.com에 있는 다른 문장을 보아야 한다.

    좋은 웹페이지 즐겨찾기