다음을 통해 공유


Microsoft Entra 외부 ID 셀프 서비스 등록 사용자 흐름에서 API 커넥터를 사용한 API 보안 유지

적용 대상: 흰색 검사 기호 기호가 있는 녹색 원입니다. Workforce 테넌트 회색 X 기호가 있는 흰색 원입니다. 외부 테넌트(자세한 정보)

Microsoft Entra 외부 ID 셀프 서비스 등록 사용자 흐름 내에서 REST API를 통합하는 경우 인증을 사용하여 REST API 엔드포인트를 보호해야 합니다. REST API 인증을 사용하면 Microsoft Entra ID와 같이 적절한 자격 증명이 있는 서비스만 엔드포인트에 대한 호출을 수행할 수 있습니다. 이 문서에서는 REST API를 보호하는 방법을 살펴봅니다.

필수 조건

연습: 가입 사용자 흐름에 API 커넥터 추가 가이드의 단계를 완료합니다.

HTTP 기본 인증 또는 HTTPS 클라이언트 인증서 인증을 사용하여 API 엔드포인트를 보호할 수 있습니다. 두 경우 모두 API 엔드포인트를 호출할 때 Microsoft Entra ID에서 사용할 자격 증명을 제공합니다. API 엔드포인트는 자격 증명을 확인하고 권한 부여 결정을 내립니다.

HTTP 기본 인증

이 문서의 단계는 시작하는 포털에 따라 약간 다를 수 있습니다.

HTTP 기본 인증은 RFC 2617에 정의되어 있습니다. 기본 인증은 다음과 같이 작동합니다. Microsoft Entra ID는 Authorization 헤더에서 클라이언트 자격 증명(usernamepassword)을 사용하여 HTTP 요청을 보냅니다. 자격 증명은 base64로 인코딩된 문자열 username:password로 형식이 지정됩니다. 그러면 API는 이러한 값을 검사하여 다른 권한 부여 결정을 수행할 수 있게 됩니다.

HTTP 기본 인증을 사용하여 API 커넥터를 구성하려면 다음 단계를 수행합니다.

  1. 최소한 사용자 관리자Microsoft Entra 관리 센터에 로그인합니다.
  2. ID>외부 ID>개요로 이동합니다.
  3. 모든 API 커넥터를 선택한 다음, 구성하려는 API 커넥터를 선택합니다.
  4. 인증 형식으로 기본을 선택합니다.
  5. REST API 엔드포인트의 사용자 이름암호를 제공합니다. API 커넥터에 대한 기본 인증 구성의 스크린샷
  6. 저장을 선택합니다.

HTTPS 클라이언트 인증서 인증

클라이언트 인증서 인증은 클라이언트, Microsoft Entra ID에서 해당 ID를 증명하기 위해 해당 클라이언트 인증서를 서버에 제공하는 상호 인증서 기반 인증입니다. 이는 SSL 핸드셰이크의 일부로 발생합니다. API는 인증서가 Microsoft Entra ID와 같은 유효한 클라이언트에 속하는지 확인하고 권한 부여 결정을 수행할 책임이 있습니다. 클라이언트 인증서는 X.509 디지털 인증서입니다.

Important

프로덕션 환경에서는 인증 기관에서 인증서를 서명해야 합니다.

인증서 만들기

인증서를 만들려면 자체 서명된 인증서 및 서명된 인증서의 인증서 발급자 공급자와의 통합 옵션이 포함된 Azure Key Vault를 사용할 수 있습니다. 권장 설정은 다음과 같습니다.

  • 제목: CN=<yourapiname>.<tenantname>.onmicrosoft.com
  • 콘텐츠 형식: PKCS #12
  • 수명 주기 작업 유형: Email all contacts at a given percentage lifetime 또는 Email all contacts a given number of days before expiry
  • 키 유형: RSA
  • 키 크기: 2048
  • 내보낼 수 있는 프라이빗 키: Yes(.pfx 파일을 내보내는 데 필요)

그러면 사용자가 인증서를 내보낼수 있습니다.

옵션 2: PowerShell을 사용하여 자체 서명된 인증서 준비

인증서가 아직 없는 경우 자체 서명된 인증서를 사용할 수 있습니다. 자체 서명된 인증서는 CA(인증 기관)가 서명하지 않은 보안 인증서이며, CA가 서명한 인증서의 보안 보장을 제공하지 않습니다.

Windows에서는 PowerShell에서 New-SelfSignedCertificate cmdlet을 사용하여 인증서를 생성합니다.

  1. 다음 PowerShell 명령을 실행하여 자체 서명된 인증서를 실행합니다. 애플리케이션 및 Azure AD B2C 테넌트 이름(예: contosowebapp.contoso.onmicrosoft.com)에 맞게 -Subject 인수를 수정합니다. -NotAfter 날짜를 조정하여 인증서에 다른 만료 날짜를 지정할 수도 있습니다.

    New-SelfSignedCertificate `
        -KeyExportPolicy Exportable `
        -Subject "CN=yourappname.yourtenant.onmicrosoft.com" `
        -KeyAlgorithm RSA `
        -KeyLength 2048 `
        -KeyUsage DigitalSignature `
        -NotAfter (Get-Date).AddMonths(12) `
        -CertStoreLocation "Cert:\CurrentUser\My"
    
  2. Windows 컴퓨터에서 사용자 인증서 관리를 검색하여 선택합니다.

  3. 인증서 - 현재 사용자에서 개인>인증서>yourappname.yourtenant.onmicrosoft.com을 선택합니다.

  4. 인증서를 선택한 다음 작업>모든 작업>내보내기를 선택합니다.

  5. 다음>예, 프라이빗 키를 내보냅니다>다음을 선택합니다.

  6. 내보내기 파일 형식의 기본값을 수락한 다음, 다음을 선택합니다.

  7. 암호 옵션을 사용하도록 설정하고 인증서 암호를 입력한 다음, 다음을 선택합니다.

  8. 인증서를 저장할 위치를 지정하려면 찾아보기를 선택하고 원하는 디렉터리로 이동합니다.

  9. 다른 이름으로 저장 창에서 파일 이름을 입력한 다음, 저장을 선택합니다.

  10. 다음>마침을 선택합니다.

Azure AD B2C가 .pfx 파일 암호를 수락하려면 AES256-SHA256이 아니라 Windows 인증서 저장소 내보내기 유틸리티의 TripleDES-SHA1 옵션을 사용하여 암호를 암호화해야 합니다.

API 커넥터 구성

클라이언트 인증서 인증을 사용하여 API 커넥터를 구성하려면 다음 단계를 수행합니다.

  1. 최소한 사용자 관리자Microsoft Entra 관리 센터에 로그인합니다.
  2. ID>외부 ID>개요로 이동합니다.
  3. 모든 API 커넥터를 선택한 다음, 구성하려는 API 커넥터를 선택합니다.
  4. 인증 형식으로 인증서를 선택합니다.
  5. 인증서 업로드 상자에서 프라이빗 키가 있는 인증서의 .pfx 파일을 선택합니다.
  6. 암호 입력 상자에 인증서의 암호를 입력합니다. API 커넥터에 대한 인증서 인증 구성의 스크린샷
  7. 저장을 선택합니다.

권한 부여 결정 수행

API는 API 엔드포인트를 보호하기 위해 전송된 클라이언트 인증서를 기준으로 권한 부여를 구현해야 합니다. Azure App Service 및 Azure Functions의 경우 TLS 상호 인증 구성을 참조하여 API 코드에서 인증서를 사용하도록 설정하고 유효성을 검사하는 방법을 알아보세요. 또는 Azure API Management를 API 서비스 앞의 계층으로 사용하여 원하는 값에 대해 클라이언트 인증서 속성을 확인할 수 있습니다.

인증서를 갱신하는 중

인증서 만료 시점에 대한 미리 알림 경고를 설정하는 것이 좋습니다. 새 인증서를 생성하고 사용된 인증서가 만료될 때 위의 단계를 반복해야 합니다. 새 인증서 사용을 "롤"하기 위해 API 서비스는 새 인증서가 배포되는 동안 일시적으로 이전 인증서와 새 인증서를 계속 수락할 수 있습니다.

기존 API 커넥터에 새 인증서를 업로드하려면 API 커넥터에서 API 커넥터를 선택하고 새 인증서 업로드를 선택합니다. 만료되지 않고 시작 날짜가 경과된 가장 최근에 업로드된 인증서가 Microsoft Entra ID에서 자동으로 사용됩니다.

새 인증서가 이미 있는 경우의 스크린샷

API 키 인증

일부 서비스는 "API 키" 메커니즘을 사용하여 호출자가 HTTP 헤더 또는 HTTP 쿼리 매개변수로 고유 키를 포함하도록 요구함으로써 개발 중에 HTTP 엔드포인트에 대한 액세스를 난독 처리합니다. Azure Functions의 경우 code엔드포인트 URL에 쿼리 매개 변수로 포함하여 이 작업을 수행할 수 있습니다. 예 - https://contoso.azurewebsites.net/api/endpoint?code=0123456789).

프로덕션 환경에서 단독으로 사용해야 하는 메커니즘이 아닙니다. 따라서 기본 또는 인증서 인증에 대한 구성이 항상 필요합니다. 개발 목적으로 인증 방법(권장하지 않음)을 구현하지 않으려면 API 커넥터 구성에서 '기본' 인증을 선택하고 적절한 승인 구현하는 동안 API가 무시할 수 있는 usernamepassword에 대한 임시 값을 사용할 수 있습니다.

다음 단계