다음을 통해 공유


Azure AD B2C의 API 커넥터에 사용되는 보안 API

중요합니다

2025년 5월 1일부터 새 고객을 위해 Azure AD B2C를 더 이상 구매할 수 없습니다. FAQ에서 자세히 알아보세요.

Azure AD B2C 사용자 흐름 내에서 REST API를 통합하는 경우 인증을 사용하여 REST API 엔드포인트를 보호해야 합니다. REST API 인증은 Azure AD B2C와 같은 적절한 자격 증명이 있는 서비스만 엔드포인트를 호출할 수 있도록 합니다. 이 문서에서는 REST API를 보호하는 방법을 살펴봅니다.

필수 조건

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

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

HTTP 기본 인증

HTTP 기본 인증은 RFC 2617에 정의되어 있습니다. 기본 인증은 다음과 같이 작동합니다.

  • Azure AD B2C는 헤더에 username 클라이언트 자격 증명(passwordAuthorization)이 포함된 HTTP 요청을 보냅니다.

  • 자격 증명은 base64로 인코딩된 문자열 username:password로 형식이 지정됩니다.

  • 그러면 API는 이러한 값을 검사하여 다른 권한 부여 결정을 수행할 수 있게 됩니다.

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

  1. Azure Portal에 로그인합니다.
  2. Azure 서비스에서Azure AD B2C를 선택하거나 Azure AD B2C를 검색하여 선택합니다.
  3. API 커넥터를 선택한 다음, 구성하려는 API 커넥터를 선택합니다.
  4. 인증 형식으로 기본을 선택합니다.
  5. REST API 엔드포인트의 사용자 이름암호를 제공합니다. API 커넥터에 대한 기본 인증 구성을 제공합니다.
  6. 저장을 선택합니다.

REST API 사용자 이름 및 암호 정책 키 추가

HTTP 기본 인증을 사용하여 REST API 기술 프로필을 구성하려면 사용자 이름 및 암호를 저장할 다음 암호화 키를 만듭니다.

  1. Azure Portal에 로그인합니다.
  2. 여러 테넌트에 액세스할 수 있는 경우 상단 메뉴의 설정 아이콘을 선택하여 디렉터리 + 구독 메뉴에서 Azure AD B2C 테넌트로 전환합니다.
  3. Azure Portal의 왼쪽 상단 모서리에서 모든 서비스를 선택하고 Azure AD B2C를 검색하여 선택합니다.
  4. 개요 페이지에서 ID 경험 프레임워크를 선택합니다.
  5. 정책 키, 추가를 차례로 선택합니다.
  6. 옵션에서 수동을 선택합니다.
  7. 이름에RestApiUsername을 입력합니다. 접두사 B2C_1A_ 자동으로 추가될 수 있습니다.
  8. 비밀 상자에 REST API 사용자 이름을 입력합니다.
  9. 키 사용의 경우 암호화를 선택합니다.
  10. 선택하고생성합니다.
  11. 정책 키를 다시 선택합니다.
  12. 추가를 선택합니다.
  13. 옵션에서 수동을 선택합니다.
  14. 이름에RestApiPassword를 입력합니다. 접두사 B2C_1A_ 자동으로 추가될 수 있습니다.
  15. 비밀 상자에 REST API 암호를 입력합니다.
  16. 키 사용의 경우 암호화를 선택합니다.
  17. 선택하고생성합니다.

HTTP 기본 인증을 사용하도록 REST API 기술 프로필 구성

필요한 키를 만든 후 자격 증명을 참조하도록 REST API 기술 프로필 메타데이터를 구성합니다.

  1. 작업 디렉터리에서 확장 정책 파일(TrustFrameworkExtensions.xml)을 엽니다.
  2. REST API 기술 프로필을 검색합니다. 예 REST-ValidateProfile: 또는 REST-GetProfile.
  3. <Metadata> 요소를 찾습니다.
  4. AuthenticationTypeBasic을 로 변경합니다.
  5. AllowInsecureAuthInProductionfalse으로 변경하세요.
  6. 닫는 </Metadata> 요소 바로 뒤에 다음 XML 코드 조각을 추가합니다.
    <CryptographicKeys>
        <Key Id="BasicAuthenticationUsername" StorageReferenceId="B2C_1A_RestApiUsername" />
        <Key Id="BasicAuthenticationPassword" StorageReferenceId="B2C_1A_RestApiPassword" />
    </CryptographicKeys>
    

다음 XML 코드 조각은 HTTP 기본 인증으로 구성된 RESTful 기술 프로필의 예입니다.

<ClaimsProvider>
  <DisplayName>REST APIs</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="REST-GetProfile">
      <DisplayName>Get user extended profile Azure Function web hook</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/GetProfile?code=your-code</Item>
        <Item Key="SendClaimsIn">Body</Item>
        <Item Key="AuthenticationType">Basic</Item>
        <Item Key="AllowInsecureAuthInProduction">false</Item>
      </Metadata>
      <CryptographicKeys>
        <Key Id="BasicAuthenticationUsername" StorageReferenceId="B2C_1A_RestApiUsername" />
        <Key Id="BasicAuthenticationPassword" StorageReferenceId="B2C_1A_RestApiPassword" />
      </CryptographicKeys>
      ...
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

HTTPS 클라이언트 인증서 인증

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

중요합니다

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

인증서 만들기

인증서를 만들려면 자체 서명된 인증서 및 서명된 인증서의 인증서 발급자 공급자와의 통합 옵션이 포함된 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 테넌트 이름(예: -Subject)에 맞게 contosowebapp.contoso.onmicrosoft.com 인수를 수정합니다. -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. Azure Portal에 로그인합니다.
  2. Azure 서비스에서 Azure AD B2C를 선택합니다.
  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 커넥터를 선택하고 새 인증서 업로드를 클릭합니다. 만료되지 않고 시작 날짜가 지난 가장 최근에 업로드된 인증서는 Azure AD B2C에서 자동으로 사용됩니다.

API 커넥터가 이미 있는 경우 API 커넥터에 새 인증서를 제공합니다.

클라이언트 인증서 정책 키 추가

  1. Azure Portal에 로그인합니다.
  2. 여러 테넌트에 액세스할 수 있는 경우 상단 메뉴의 설정 아이콘을 선택하여 디렉터리 + 구독 메뉴에서 Azure AD B2C 테넌트로 전환합니다.
  3. Azure Portal의 왼쪽 상단 모서리에서 모든 서비스를 선택하고 Azure AD B2C를 검색하여 선택합니다.
  4. 개요 페이지에서 ID 경험 프레임워크를 선택합니다.
  5. 정책 키, 추가를 차례로 선택합니다.
  6. 옵션 상자에서 업로드를 선택합니다.
  7. 이름 상자에 RestApiClientCertificate를 입력합니다. 접두사 B2C_1A_ 이 자동으로 추가됩니다.
  8. 파일 업로드 상자에서 프라이빗 키가 있는 인증서의 .pfx 파일을 선택합니다.
  9. Password( 암호 ) 상자에 인증서의 암호를 입력합니다.
  10. 선택하고생성합니다.

클라이언트 인증서 인증을 사용하도록 REST API 기술 프로필 구성

필요한 키를 만든 후 클라이언트 인증서를 참조하도록 REST API 기술 프로필 메타데이터를 구성합니다.

  1. 작업 디렉터리에서 확장 정책 파일(TrustFrameworkExtensions.xml)을 엽니다.
  2. REST API 기술 프로필을 검색합니다. 예 REST-ValidateProfile: 또는 REST-GetProfile.
  3. <Metadata> 요소를 찾습니다.
  4. AuthenticationTypeClientCertificate을 로 변경합니다.
  5. AllowInsecureAuthInProductionfalse으로 변경하세요.
  6. 닫는 </Metadata> 요소 바로 뒤에 다음 XML 코드 조각을 추가합니다.
    <CryptographicKeys>
       <Key Id="ClientCertificate" StorageReferenceId="B2C_1A_RestApiClientCertificate" />
    </CryptographicKeys>
    

다음 XML 코드 조각은 HTTP 클라이언트 인증서로 구성된 RESTful 기술 프로필의 예입니다.

<ClaimsProvider>
  <DisplayName>REST APIs</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="REST-GetProfile">
      <DisplayName>Get user extended profile Azure Function web hook</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/GetProfile?code=your-code</Item>
        <Item Key="SendClaimsIn">Body</Item>
        <Item Key="AuthenticationType">ClientCertificate</Item>
        <Item Key="AllowInsecureAuthInProduction">false</Item>
      </Metadata>
      <CryptographicKeys>
        <Key Id="ClientCertificate" StorageReferenceId="B2C_1A_RestApiClientCertificate" />
      </CryptographicKeys>
      ...
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

OAuth2 베어러 인증

전달자 토큰 인증은 OAuth2.0 권한 부여 프레임워크: 전달자 토큰 사용(RFC 6750)에 정의되어 있습니다. 전달자 토큰 인증에서 Azure AD B2C는 권한 부여 헤더에 토큰이 있는 HTTP 요청을 보냅니다.

Authorization: Bearer <token>

전달자 토큰은 불투명 문자열입니다. JWT 액세스 토큰 또는 REST API가 Azure AD B2C가 권한 부여 헤더에 보낼 것으로 예상하는 문자열일 수 있습니다. Azure AD B2C는 다음 유형을 지원합니다.

  • 전달자 토큰 RESTful 기술 프로필에서 전달자 토큰을 보낼 수 있으려면 정책에서 먼저 전달자 토큰을 획득한 다음 RESTful 기술 프로필에서 사용해야 합니다.
  • 정적 베어러 토큰입니다. REST API가 장기 액세스 토큰을 발급하는 경우 이 방법을 사용합니다. 정적 Bearer 토큰을 사용하려면 정책 키를 만들고 RESTful 기술 프로필에서 해당 정책 키를 참조하도록 설정하십시오.

OAuth2 베어러 사용

다음 단계에서는 클라이언트 자격 증명을 사용하여 전달자 토큰을 얻고 REST API 호출의 권한 부여 헤더에 전달하는 방법을 보여 줍니다.

전달자 토큰을 저장할 클레임 정의Define a claim to store the bearer token

클레임은 Azure AD B2C 정책 실행 중에 데이터의 임시 스토리지를 제공합니다. 클레임 스키마는 클레임을 선언하는 위치입니다. 액세스 토큰은 나중에 사용할 수 있도록 클레임에 저장해야 합니다.

  1. 정책의 확장 파일을 엽니다. 예: SocialAndLocalAccounts/TrustFrameworkExtensions.xml.
  2. BuildingBlocks 요소를 검색합니다. 요소가 없으면 추가합니다.
  3. ClaimsSchema 요소를 찾습니다. 요소가 없으면 추가합니다.
  4. ClaimsSchema 요소에 다음 클레임을 추가합니다.
<ClaimType Id="bearerToken">
  <DisplayName>Bearer token</DisplayName>
  <DataType>string</DataType>
</ClaimType>
<ClaimType Id="grant_type">
  <DisplayName>Grant type</DisplayName>
  <DataType>string</DataType>
</ClaimType>
<ClaimType Id="scope">
  <DisplayName>scope</DisplayName>
  <DataType>string</DataType>
</ClaimType>

액세스 토큰 획득

연합 ID 공급자의 경우, 액세스 토큰을 반환하는 REST API를 호출하거나, ROPC 흐름을 사용하거나, 클라이언트 자격 증명 흐름을 사용하여 여러 방법 중 하나로 액세스 토큰을 얻을 수 있습니다. 클라이언트 자격 증명 흐름은 사용자와의 즉각적인 상호 작용 없이 백그라운드에서 실행되어야 하는 서버 간 상호 작용에 일반적으로 사용됩니다.

경고

Microsoft는 ROPC 흐름을 사용하지 않도록 권장합니다. 이 흐름은 응용 프로그램에 대한 매우 높은 수준의 신뢰를 필요로 하며 다른 흐름에는 없는 위험을 수반합니다. 보다 안전한 다른 흐름을 실행할 수 없는 경우에만 이 흐름을 사용해야 합니다.

Microsoft Entra 액세스 토큰 획득

다음 예제에서는 REST API 기술 프로필을 사용하여 HTTP 기본 인증으로 전달된 클라이언트 자격 증명을 사용하여 Microsoft Entra 토큰 엔드포인트에 요청합니다. 자세한 내용은 Microsoft ID 플랫폼 및 OAuth 2.0 클라이언트 자격 증명 흐름을 참조하세요.

기술 프로필이 Microsoft Entra ID와 상호 작용하여 액세스 토큰을 얻으려면 먼저 애플리케이션을 등록해야 합니다. Azure AD B2C는 Microsoft Entra 플랫폼을 사용합니다. Azure AD B2C 테넌트 또는 관리하는 Microsoft Entra 테넌트에서 앱을 만들 수 있습니다. 응용 프로그램을 등록하려면 다음을 수행합니다.

  1. Azure Portal에 로그인합니다.
  2. 여러 테넌트에 액세스할 수 있는 경우 상단 메뉴의 설정 아이콘을 선택하여 디렉터리 + 구독 메뉴에서 Azure AD B2C 테넌트로 전환합니다.
  3. 왼쪽 메뉴에서 Microsoft Entra ID를 선택합니다. 또는 모든 서비스를 선택하고 Microsoft Entra ID를 검색하여 선택합니다.
  4. 앱 등록을 선택하고, 새 등록을 선택합니다.
  5. 애플리케이션의 이름을 입력합니다. 예를 들면 Client_Credentials_Auth_app와 같습니다.
  6. 지원되는 계정 유형에서 이 조직 디렉터리의 계정만 선택합니다.
  7. 등록을 선택합니다.
  8. 애플리케이션(클라이언트) ID를 기록합니다.

클라이언트 자격 증명 흐름의 경우 애플리케이션 암호를 만들어야 합니다. 클라이언트 암호는 응용 프로그램 암호라고도 합니다. 애플리케이션은 비밀을 사용하여 액세스 토큰을 획득합니다.

  1. Microsoft Entra ID - 앱 등록 페이지에서 만든 애플리케이션(예: Client_Credentials_Auth_app)을 선택합니다.
  2. 왼쪽 메뉴의 관리아래에서 인증서 및 & 비밀을(를) 선택하십시오.
  3. 새 클라이언트 암호를 선택합니다.
  4. 설명 상자에 클라이언트 암호에 대한 설명을 입력합니다. 예: clientsecret1.
  5. 만료에서 암호가 유효한 기간을 선택한 다음 추가를 선택합니다.
  6. 클라이언트 애플리케이션 코드에서 사용할 비밀 을 기록합니다. 이 비밀 값은 이 페이지를 떠난 후에 다시 표시되지 않습니다. 이 값을 애플리케이션의 코드에서 애플리케이션 비밀로 사용합니다.

Azure AD B2C 정책 키 만들기

Azure AD B2C 테넌트에 이전에 기록한 클라이언트 ID 및 클라이언트 암호 값을 저장해야 합니다.

  1. Azure Portal에 로그인합니다.
  2. 여러 테넌트에 액세스할 수 있는 경우 상단 메뉴의 설정 아이콘을 선택하여 디렉터리 + 구독 메뉴에서 Azure AD B2C 테넌트로 전환합니다.
  3. Azure Portal의 왼쪽 상단 모서리에서 모든 서비스를 선택하고 Azure AD B2C를 검색하여 선택합니다.
  4. 개요 페이지에서 ID 경험 프레임워크를 선택합니다.
  5. 정책 키를 선택한 다음 추가를 선택합니다.
  6. 옵션의 경우 .를 선택합니다Manual.
  7. 정책 키의 SecureRESTClientId 을 입력합니다. 접두사는 B2C_1A_ 키 이름에 자동으로 추가됩니다.
  8. 비밀에 이전에 기록한 클라이언트 ID를 입력합니다.
  9. 키 사용에 대해 Signature을(를) 선택합니다.
  10. 선택하고생성합니다.
  11. 다음 설정을 사용하여 다른 정책 키를 만듭니다.
    • 이름: SecureRESTClientSecret.
    • 비밀: 이전에 기록한 클라이언트 암호를 입력합니다.

ServiceUrl의 경우 your-tenant-name을 Microsoft Entra 테넌트의 이름으로 바꿉니다. 사용 가능한 모든 옵션에 대해서는 RESTful 기술 프로필 참조를 참조하십시오.

<TechnicalProfile Id="REST-AcquireAccessToken">
  <DisplayName></DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="ServiceUrl">https://login.microsoftonline.com/your-tenant-name.onmicrosoft.com/oauth2/v2.0/token</Item>
    <Item Key="AuthenticationType">Basic</Item>
     <Item Key="SendClaimsIn">Form</Item>
  </Metadata>
  <CryptographicKeys>
    <Key Id="BasicAuthenticationUsername" StorageReferenceId="B2C_1A_SecureRESTClientId" />
    <Key Id="BasicAuthenticationPassword" StorageReferenceId="B2C_1A_SecureRESTClientSecret" />
  </CryptographicKeys>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="grant_type" DefaultValue="client_credentials" AlwaysUseDefaultValue="true" />
    <InputClaim ClaimTypeReferenceId="scope" DefaultValue="https://graph.microsoft.com/.default" AlwaysUseDefaultValue="true" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="bearerToken" PartnerClaimType="access_token" />
  </OutputClaims>
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>

비고

기술 프로필에서 grant_type 또는 scope 클레임을 사용하는 경우 잘못된 값에 대한 바인딩에서 잠재적인 충돌을 방지하기 위해 DefaultValue를 지정하고 AlwaysUseDefaultValue="true"를 사용하는 것이 좋습니다.

전달자 토큰 인증을 사용하도록 REST 기술 프로필 변경

사용자 지정 정책에서 전달자 토큰 인증을 지원하려면 다음 단계를 사용하여 REST API 기술 프로필을 수정합니다.

  1. 작업 디렉터리에서 TrustFrameworkExtensions.xml 확장 정책 파일을 엽니다.

  2. <TechnicalProfile> 를 포함하는 Id="REST-API-SignUp"노드를 검색합니다.

  3. <Metadata> 요소를 찾습니다.

  4. 다음과 같이 AuthenticationTypeBearer로 변경합니다.

    <Item Key="AuthenticationType">Bearer</Item>
    
  5. 다음과 같이 UseClaimAsBearerTokenbearerToken에 변경하거나 추가합니다. bearerToken은 (출력 클레임 REST-AcquireAccessToken에서) 전달자 토큰이 검색되는 클레임의 이름입니다.

    <Item Key="UseClaimAsBearerToken">bearerToken</Item>
    
  6. 이전 단계의 클레임을 입력 클레임으로 추가합니다.

    <InputClaim ClaimTypeReferenceId="bearerToken"/>
    

정책을 업데이트한 후 기술 프로필은 다음 XML 코드와 유사하게 표시됩니다.

<ClaimsProvider>
  <DisplayName>REST APIs</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="REST-GetProfile">
      <DisplayName>Get user extended profile Azure Function web hook</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/GetProfile?code=your-code</Item>
        <Item Key="SendClaimsIn">Body</Item>
        <Item Key="AuthenticationType">Bearer</Item>
        <Item Key="UseClaimAsBearerToken">bearerToken</Item>
        <Item Key="AllowInsecureAuthInProduction">false</Item>
      </Metadata>
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="bearerToken"/>
      </InputClaims>
      ...
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

REST 기술 프로필로 전화

먼저 REST-GetProfile 기술 프로필을 사용하여 Microsoft Entra 액세스 토큰을 획득한 후, REST-AcquireAccessToken 기술 프로필을 호출해야 합니다. 다음 예제에서는 REST-GetProfile에서 기술 프로필을 호출하는 방법을 보여 줍니다.

<ValidationTechnicalProfiles>
  <ValidationTechnicalProfile ReferenceId="REST-AcquireAccessToken" />
  <ValidationTechnicalProfile ReferenceId="REST-GetProfile" />
</ValidationTechnicalProfiles>

다음 예제에서는 REST-GetProfile 또는 하위 여정에서 기술 프로필을 호출하는 방법을 보여 줍니다.

<OrchestrationSteps>
  <OrchestrationStep Order="2" Type="ClaimsExchange">
    <ClaimsExchanges>
      <ClaimsExchange Id="REST-AcquireAccessTokens" TechnicalProfileReferenceId="REST-AcquireAccessToken" />
    </ClaimsExchanges>
  </OrchestrationStep>

  <OrchestrationStep Order="3" Type="ClaimsExchange">
    <ClaimsExchanges>
      <ClaimsExchange Id="REST-GetProfile" TechnicalProfileReferenceId="REST-GetProfile" />
    </ClaimsExchanges>
  </OrchestrationStep>
</OrchestrationSteps>

정적 OAuth2 베어러 사용

OAuth2 전달자 토큰 정책 키 추가

OAuth2 전달자 토큰을 사용하여 REST API 기술 프로필을 구성하려면 REST API 소유자로부터 액세스 토큰을 가져옵니다. 그런 다음, 전달자 토큰을 저장할 다음 암호화 키를 만듭니다.

  1. Azure Portal에 로그인합니다.
  2. 여러 테넌트에 액세스할 수 있는 경우 상단 메뉴의 설정 아이콘을 선택하여 디렉터리 + 구독 메뉴에서 Azure AD B2C 테넌트로 전환합니다.
  3. Azure Portal의 왼쪽 상단 모서리에서 모든 서비스를 선택하고 Azure AD B2C를 검색하여 선택합니다.
  4. 개요 페이지에서 ID 경험 프레임워크를 선택합니다.
  5. 정책 키, 추가를 차례로 선택합니다.
  6. 옵션의 경우 .를 선택합니다Manual.
  7. 정책 키의 이름을 입력합니다. 예: RestApiBearerToken. 접두사는 B2C_1A_ 키 이름에 자동으로 추가됩니다.
  8. 비밀에서 이전에 기록한 클라이언트 암호를 입력합니다.
  9. 키 사용에 대해 Encryption을(를) 선택합니다.
  10. 선택하고생성합니다.

전달자 토큰 정책 키를 사용하도록 REST API 기술 프로필을 구성합니다.

필요한 키를 만든 후 전달자 토큰을 참조하도록 REST API 기술 프로필 메타데이터를 구성합니다.

  1. 작업 디렉터리에서 확장 정책 파일(TrustFrameworkExtensions.xml)을 엽니다.
  2. REST API 기술 프로필을 검색합니다. 예 REST-ValidateProfile: 또는 REST-GetProfile.
  3. <Metadata> 요소를 찾습니다.
  4. AuthenticationTypeBearer을 로 변경합니다.
  5. AllowInsecureAuthInProductionfalse으로 변경하세요.
  6. 닫는 </Metadata> 요소 바로 뒤에 다음 XML 코드 조각을 추가합니다.
    <CryptographicKeys>
       <Key Id="BearerAuthenticationToken" StorageReferenceId="B2C_1A_RestApiBearerToken" />
    </CryptographicKeys>
    

다음 XML 코드 조각은 전달자 토큰 인증으로 구성된 RESTful 기술 프로필의 예입니다.

<ClaimsProvider>
  <DisplayName>REST APIs</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="REST-GetProfile">
      <DisplayName>Get user extended profile Azure Function web hook</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/GetProfile?code=your-code</Item>
        <Item Key="SendClaimsIn">Body</Item>
        <Item Key="AuthenticationType">Bearer</Item>
        <Item Key="AllowInsecureAuthInProduction">false</Item>
      </Metadata>
      <CryptographicKeys>
        <Key Id="BearerAuthenticationToken" StorageReferenceId="B2C_1A_RestApiBearerToken" />
      </CryptographicKeys>
      ...
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

등록 기술 프로필에서 REST-AcquireAccessToken을 호출하는 유효성 검사 기술 프로필 참조를 추가합니다. 이 동작은 Azure AD B2C가 유효성 검사에 성공한 후에만 디렉터리에 계정을 만들기 위해 계속 진행됨을 의미합니다.

다음은 그 예입니다.

```XML
<ValidationTechnicalProfiles>
   ....
   <ValidationTechnicalProfile ReferenceId="REST-AcquireAccessToken" />
   ....
</ValidationTechnicalProfiles>

API 키 인증

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

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

API 키는 REST API 엔드포인트에 액세스하기 위해 사용자를 인증하는 데 사용되는 고유 식별자입니다. 키는 사용자 지정 HTTP 헤더로 전송됩니다. 예를 들어 Azure Functions HTTP 트리거x-functions-key HTTP 헤더를 사용하여 요청자를 식별합니다.

API 키 정책 키 추가

API 키 인증을 사용하여 REST API 기술 프로필을 구성하려면 다음 암호화 키를 만들어 API 키를 저장합니다.

  1. Azure Portal에 로그인합니다.
  2. 여러 테넌트에 액세스할 수 있는 경우 상단 메뉴의 설정 아이콘을 선택하여 디렉터리 + 구독 메뉴에서 Azure AD B2C 테넌트로 전환합니다.
  3. Azure Portal의 왼쪽 상단 모서리에서 모든 서비스를 선택하고 Azure AD B2C를 검색하여 선택합니다.
  4. 개요 페이지에서 ID 경험 프레임워크를 선택합니다.
  5. 정책 키, 추가를 차례로 선택합니다.
  6. 옵션에서 수동을 선택합니다.
  7. 이름에RestApiKey를 입력합니다. 접두사 B2C_1A_ 자동으로 추가될 수 있습니다.
  8. 비밀 상자에 REST API 키를 입력합니다.
  9. 키 사용의 경우 암호화를 선택합니다.
  10. 선택하고생성합니다.

API 키 인증을 사용하도록 REST API 기술 프로필 구성

필요한 키를 만든 후 자격 증명을 참조하도록 REST API 기술 프로필 메타데이터를 구성합니다.

  1. 작업 디렉터리에서 확장 정책 파일(TrustFrameworkExtensions.xml)을 엽니다.
  2. REST API 기술 프로필을 검색합니다. 예 REST-ValidateProfile: 또는 REST-GetProfile.
  3. <Metadata> 요소를 찾습니다.
  4. AuthenticationTypeApiKeyHeader을 로 변경합니다.
  5. AllowInsecureAuthInProductionfalse으로 변경하세요.
  6. 닫는 </Metadata> 요소 바로 뒤에 다음 XML 코드 조각을 추가합니다.
    <CryptographicKeys>
        <Key Id="x-functions-key" StorageReferenceId="B2C_1A_RestApiKey" />
    </CryptographicKeys>
    

암호화 키의 Id 는 HTTP 헤더를 정의합니다. 이 예제에서 API 키는 x-functions-key로 전송됩니다.

다음 XML 코드 조각은 API 키 인증을 사용하여 Azure Function을 호출하도록 구성된 RESTful 기술 프로필의 예입니다.

<ClaimsProvider>
  <DisplayName>REST APIs</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="REST-GetProfile">
      <DisplayName>Get user extended profile Azure Function web hook</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/GetProfile?code=your-code</Item>
        <Item Key="SendClaimsIn">Body</Item>
        <Item Key="AuthenticationType">ApiKeyHeader</Item>
        <Item Key="AllowInsecureAuthInProduction">false</Item>
      </Metadata>
      <CryptographicKeys>
        <Key Id="x-functions-key" StorageReferenceId="B2C_1A_RestApiKey" />
      </CryptographicKeys>
      ...
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>