Azure AD B2C에 SAML 애플리케이션 등록

이 문서에서는 인증을 위해 SAML(Security Assertion Markup Language) 애플리케이션(서비스 공급자)을 Azure AD B2C(Azure Active Directory B2C)에 연결하는 방법을 알아봅니다.

시작하기 전에정책 유형 선택 선택기를 사용하여 설정하려는 정책 유형을 선택합니다. Azure Active Directory B2C는 사용자가 애플리케이션과 상호 작용하는 방법을 정의하는 두 가지 방법, 즉 미리 정의된 사용자 흐름 또는 완전히 구성 가능한 사용자 지정 정책을 통해 제공합니다. 이 문서에서 필요한 단계는 각 방법마다 다릅니다.

이 기능은 사용자 지정 정책에만 사용할 수 있습니다. 설정 단계의 경우 이전 선택기의 사용자 지정 정책을 선택합니다.

개요

Azure AD B2C를 고객 ID 및 액세스 관리 솔루션으로 사용하는 조직은 SAML 프로토콜을 사용하여 인증하는 애플리케이션과 통합이 필요할 수 있습니다. 다음 다이어그램에서는 Azure AD B2C가 SAML 기반 애플리케이션으로 SSO(Single-Sign-On)를 구현하기 위해 IdP(ID 공급자) 역할을 수행하는 방법을 보여줍니다.

Diagram with Azure Active Directory B2C as an identity provider on the left and as a service provider on the right.

  1. 애플리케이션이 Azure AD B2C의 SAML 로그인 엔드포인트로 전송되는 SAML AuthN 요청을 만듭니다.
  2. 사용자는 Azure AD B2C 로컬 계정 또는 기타 페더레이션 ID 공급자(구성된 경우)를 사용하여 인증할 수 있습니다.
  3. 사용자가 페더레이션 ID 공급자를 사용하여 로그인하면 토큰 응답이 Azure AD B2C로 전송됩니다.
  4. Azure AD B2C는 SAML 어설션을 생성하고 애플리케이션에 보냅니다.

이 동영상을 시청하여 SAML 애플리케이션을 Azure AD B2C와 통합하는 방법을 알아봅니다.

사전 요구 사항

이 문서의 시나리오에는 다음이 필요합니다.

  • 문서에 설명된 사용자 지정 정책 시작 팩의 SocialAndLocalAccounts 사용자 지정 정책. Azure AD B2C에서 사용자 지정 정책 시작의 단계를 완료합니다.
  • SAML 프로토콜에 대한 기본적인 이해와 애플리케이션의 SAML 구현에 대한 지식.
  • SAML 애플리케이션으로 구성된 웹 애플리케이션 SAML AuthN 요청을 보내고 Azure AD B2C에서 SAML 응답을 수신, 디코드 및 확인하는 기능이 있어야 합니다. SAML 애플리케이션은 신뢰 당사자 애플리케이션 또는 서비스 공급자라고도 합니다.
  • SAML 애플리케이션의 공개적으로 사용 가능한 SAML 메타데이터 엔드포인트 또는 XML 문서
  • Azure AD B2C 테넌트.

SAML 애플리케이션 및 연결된 메타데이터 엔드포인트가 아직 없는 경우 Microsoft에서 테스트용으로 제공한 SAML 테스트 애플리케이션을 사용할 수 있습니다.

중요

엔드포인트는 Azure AD B2C 보안 요구 사항을 준수해야 합니다. 이전 TLS 버전 및 암호는 사용되지 않습니다. 자세한 내용은 Azure AD B2C TLS 및 암호화 도구 모음 요구 사항을 참조하세요.

인증서 설정

애플리케이션과 Azure AD B2C 간에 신뢰 관계를 구축하려면 두 서비스 모두 서로의 서명을 만들고 유효성을 검사할 수 있어야 합니다. 애플리케이션 및 Azure AD B2C에서 X509 인증서를 구성합니다.

애플리케이션 인증서

사용량 필수 Description
SAML 요청 서명 아니요 프라이빗 키가 웹앱에 저장된 인증서입니다. 애플리케이션에서 인증서를 사용하여 Azure AD B2C에 전송된 SAML 요청에 서명합니다. 웹앱은 SAML 메타데이터 엔드포인트를 통해 공개 키를 노출해야 합니다. Azure AD B2C는 애플리케이션 메타데이터의 공개 키를 사용하여 SAML 요청 서명의 유효성을 검사합니다.
SAML 어설션 암호화 아니요 프라이빗 키가 웹앱에 저장된 인증서입니다. 웹앱은 SAML 메타데이터 엔드포인트를 통해 공개 키를 노출해야 합니다. Azure AD B2C는 공개 키를 사용하여 애플리케이션에 대한 어설션을 암호화할 수 있습니다. 그러면 애플리케이션은 프라이빗 키를 사용하여 어설션 암호를 해독합니다.

Azure AD B2C 인증서

사용량 필수 Description
SAML 응답 서명 프라이빗 키가 Azure AD B2C에 저장된 인증서입니다. Azure AD B2C는 이 인증서를 사용하여 애플리케이션에 전송되는 SAML 응답에 서명합니다. 애플리케이션은 Azure AD B2C의 메타데이터 공개 키를 읽어서 SAML 응답 서명의 유효성을 검사합니다.
SAML 어설션 서명 프라이빗 키가 Azure AD B2C에 저장된 인증서입니다. Azure AD B2C는 이 인증서를 사용하여 SAML 응답의 <saml:Assertion> 부분에 서명합니다.

프로덕션 환경에서는 공용 인증 기관에서 발급한 인증서를 사용하는 것이 좋습니다. 그러나 자체 서명된 인증서를 통해 이 절차를 완료할 수도 있습니다.

정책 키 만들기

애플리케이션과 Azure AD B2C 간에 트러스트 관계를 유지하려면 SAML 응답 서명 인증서를 만듭니다. Azure AD B2C는 이 인증서를 사용하여 애플리케이션에 전송되는 SAML 응답에 서명합니다. 애플리케이션은 Azure AD B2C의 메타데이터 공개 키를 읽어서 SAML 응답 서명의 유효성을 검사합니다.

SAML 어설션에 서명하는 등 다른 용도로 이 정책 키를 사용할 수 있습니다.

인증서 받기

인증서가 아직 없는 경우 자체 서명된 인증서를 사용할 수 있습니다. 자체 서명된 인증서는 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 옵션을 사용하여 암호를 암호화해야 합니다.

인증서 업로드

Azure AD B2C 테넌트에 인증서를 저장해야 합니다.

  1. Azure Portal에 로그인합니다.
  2. Azure AD B2C 테넌트가 포함된 디렉터리를 사용하고 있는지 확인합니다. 포털 도구 모음에서 디렉터리 + 구독 아이콘을 선택합니다.
  3. 포털 설정 | 디렉터리 + 구독 페이지의 디렉터리 이름 목록에서 Azure AD B2C 디렉터리를 찾은 다음, 전환을 선택합니다.
  4. Azure Portal의 왼쪽 위에서 전체 서비스를 선택한 다음, Azure AD B2C를 검색하여 선택합니다.
  5. 개요 페이지에서 Identity Experience Framework를 선택합니다.
  6. 정책 키, 추가를 차례로 선택합니다.
  7. 옵션에서 업로드를 선택합니다.
  8. 이름에서 정책 키의 이름을 입력합니다. 예를 들어 SamlIdpCert를 입력합니다. B2C_1A_ 접두사가 키의 이름에 자동으로 추가됩니다.
  9. 프라이빗 키가 있는 인증서 .pfx 파일을 찾아 선택합니다.
  10. 만들기를 선택합니다.

정책이 SAML 애플리케이션과 연결되도록 설정

SAML 애플리케이션에 연결하려면 Azure AD B2C가 SAML 응답을 만들 수 있어야 합니다.

사용자 지정 정책 시작 팩에서 SocialAndLocalAccounts\TrustFrameworkExtensions.xml을 엽니다.

<ClaimsProviders> 섹션을 찾고 다음 XML 조각을 추가하여 SAML 응답 생성기를 구현합니다.

<ClaimsProvider>
  <DisplayName>Token Issuer</DisplayName>
  <TechnicalProfiles>

    <!-- SAML Token Issuer technical profile -->
    <TechnicalProfile Id="Saml2AssertionIssuer">
      <DisplayName>Token Issuer</DisplayName>
      <Protocol Name="SAML2"/>
      <OutputTokenFormat>SAML2</OutputTokenFormat>
      <Metadata>
        <Item Key="IssuerUri">https://issuerUriMyAppExpects</Item>
      </Metadata>
      <CryptographicKeys>
        <Key Id="SamlAssertionSigning" StorageReferenceId="B2C_1A_SamlIdpCert"/>
        <Key Id="SamlMessageSigning" StorageReferenceId="B2C_1A_SamlIdpCert"/>
      </CryptographicKeys>
      <InputClaims/>
      <OutputClaims/>
      <UseTechnicalProfileForSessionManagement ReferenceId="SM-Saml-issuer"/>
    </TechnicalProfile>

    <!-- Session management technical profile for SAML-based tokens -->
    <TechnicalProfile Id="SM-Saml-issuer">
      <DisplayName>Session Management Provider</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.SamlSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
    </TechnicalProfile>

  </TechnicalProfiles>
</ClaimsProvider>

SAML 응답의 발급자 URI 구성

SAML 토큰 발급자 기술 프로필의 IssuerUri 메타데이터 항목 값을 변경할 수 있습니다. 이 변경 사항은 Azure AD B2C의 SAML 응답에 반환된 issuerUri 특성에 반영됩니다. SAML 응답 유효성 검사에 동일한 IssuerUri 값을 수락하도록 애플리케이션을 구성해야 합니다.

<ClaimsProvider>
  <DisplayName>Token Issuer</DisplayName>
  <TechnicalProfiles>
    <!-- SAML Token Issuer technical profile -->
    <TechnicalProfile Id="Saml2AssertionIssuer">
      <DisplayName>Token Issuer</DisplayName>
      <Protocol Name="SAML2"/>
      <OutputTokenFormat>SAML2</OutputTokenFormat>
      <Metadata>
        <Item Key="IssuerUri">https://issuerUriMyAppExpects</Item>
      </Metadata>
      ...
    </TechnicalProfile>

SAML 응답을 발급하도록 정책 구성

이제 정책에서 SAML 응답을 생성할 수 있으므로 애플리케이션에 대한 기본 JWT 응답 대신 SAML 응답을 발행하도록 정책을 구성해야 합니다.

SAML에 대해 구성된 등록 또는 로그인 정책 만들기

  1. 시작 팩의 작업 디렉터리에 SignUpOrSignin.xml 파일의 복사본을 만들고 새 이름으로 저장합니다. 이 문서에서는 SignUpOrSigninSAML.xml을 예로 사용합니다. 이 파일은 신뢰 당사자에 대한 정책 파일입니다. 기본적으로 JWT 응답을 발급하도록 구성되어 있습니다.

  2. 원하는 편집기에서 SignUpOrSigninSAML.xml 파일을 엽니다.

  3. 정책의 PolicyIdPublicPolicyUri 값을 B2C_1A_signup_signin_samlhttp://<tenant-name>.onmicrosoft.com/B2C_1A_signup_signin_saml로 변경할 수 있습니다.

    <TrustFrameworkPolicy
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns="http://schemas.microsoft.com/online/cpim/schemas/2013/06"
    PolicySchemaVersion="0.3.0.0"
    TenantId="tenant-name.onmicrosoft.com"
    PolicyId="B2C_1A_signup_signin_saml"
    PublicPolicyUri="http://<tenant-name>.onmicrosoft.com/B2C_1A_signup_signin_saml">
    
  4. 사용자 경험이 끝나면 Azure AD B2C에 SendClaims 단계가 포함됩니다. 이 단계에서는 토큰 발급자 기술 프로필을 참조합니다. 기본 JWT 응답이 아닌 SAML 응답을 발급하려면 SendClaims새 SAML 토큰 발급자 기술 프로필을 참조하는 단계를 수정Saml2AssertionIssuer합니다.

<RelyingParty> 요소 바로 앞에 다음 XML 코드 조각을 추가합니다. 이 XML은 SignUpOrSignIn 사용자 경험의 오케스트레이션 단계 7을 덮어씁니다.

시작 팩의 다른 폴더에서 시작했거나 오케스트레이션 단계를 추가 또는 제거하여 사용자 경험을 사용자 지정한 경우 order 요소의 번호가 토큰 발급자 단계의 사용자 경험에 지정된 번호와 일치하는지 확인합니다. 예를 들어 다른 시작 팩 폴더에서 해당 단계 번호는 LocalAccounts의 경우 4, SocialAccounts의 경우 6, SocialAndLocalAccountsWithMfa의 9입니다.

<UserJourneys>
  <UserJourney Id="SignUpOrSignIn">
    <OrchestrationSteps>
      <OrchestrationStep Order="7" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="Saml2AssertionIssuer"/>
    </OrchestrationSteps>
  </UserJourney>
</UserJourneys>

신뢰 당사자 요소는 애플리케이션에서 사용하는 프로토콜을 결정합니다. 기본값은 OpenId입니다. Protocol 요소는 SAML로 변경해야 합니다. 출력 클레임은 SAML 어설션에 대한 클레임 매핑을 만듭니다.

<RelyingParty> 요소의 전체 <TechnicalProfile> 요소를 다음 기술 프로필 XML로 바꿉니다. tenant-name을 Azure AD B2C 테넌트의 이름으로 업데이트합니다.

    <TechnicalProfile Id="PolicyProfile">
      <DisplayName>PolicyProfile</DisplayName>
      <Protocol Name="SAML2"/>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="displayName" />
        <OutputClaim ClaimTypeReferenceId="givenName" />
        <OutputClaim ClaimTypeReferenceId="surname" />
        <OutputClaim ClaimTypeReferenceId="email" DefaultValue="" />
        <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="" />
        <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="objectId"/>
      </OutputClaims>
      <SubjectNamingInfo ClaimType="objectId" ExcludeAsClaim="true"/>
    </TechnicalProfile>

신뢰 당사자의 최종 정책 파일은 다음 XML 코드처럼 표시됩니다.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<TrustFrameworkPolicy
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns="http://schemas.microsoft.com/online/cpim/schemas/2013/06"
  PolicySchemaVersion="0.3.0.0"
  TenantId="contoso.onmicrosoft.com"
  PolicyId="B2C_1A_signup_signin_saml"
  PublicPolicyUri="http://contoso.onmicrosoft.com/B2C_1A_signup_signin_saml">

  <BasePolicy>
    <TenantId>contoso.onmicrosoft.com</TenantId>
    <PolicyId>B2C_1A_TrustFrameworkExtensions</PolicyId>
  </BasePolicy>

  <UserJourneys>
    <UserJourney Id="SignUpOrSignIn">
      <OrchestrationSteps>
        <OrchestrationStep Order="7" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="Saml2AssertionIssuer"/>
      </OrchestrationSteps>
    </UserJourney>
  </UserJourneys>

  <RelyingParty>
    <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
    <TechnicalProfile Id="PolicyProfile">
      <DisplayName>PolicyProfile</DisplayName>
      <Protocol Name="SAML2"/>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="displayName" />
        <OutputClaim ClaimTypeReferenceId="givenName" />
        <OutputClaim ClaimTypeReferenceId="surname" />
        <OutputClaim ClaimTypeReferenceId="email" DefaultValue="" />
        <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="" />
        <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="objectId"/>
      </OutputClaims>
      <SubjectNamingInfo ClaimType="objectId" ExcludeAsClaim="true"/>
    </TechnicalProfile>
  </RelyingParty>
</TrustFrameworkPolicy>

참고

이와 동일한 프로세스에 따라 다른 형식의 사용자 흐름(예: 로그인, 암호 재설정 또는 프로필 편집 흐름)을 구현할 수 있습니다.

정책 업로드

변경 내용을 저장하고 새 TrustFrameworkExtensions.xmlSignUpOrSigninSAML.xml 정책 파일을 Azure Portal에 업로드합니다.

Azure AD B2C IdP SAML 메타데이터 테스트

정책 파일이 업로드된 후 Azure AD B2C는 구성 정보를 사용하여 애플리케이션에서 사용할 ID 공급자의 SAML 메타데이터 문서를 생성합니다. SAML 메타데이터 문서에는 로그인 방법, 로그아웃 방법 및 인증서 등의 서비스 위치가 포함되어 있습니다.

Azure AD B2C 정책 메타데이터는 다음 URL에서 사용할 수 있습니다.

https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/<policy-name>/samlp/metadata

<tenant-name>은 Azure AD B2C 테넌트의 이름으로 바꿉니다. <policy-name>을(를) 정책의 이름(ID)으로 바꿉니다. 예를 들면 다음과 같습니다.

https://contoso.b2clogin.com/contoso.onmicrosoft.com/B2C_1A_signup_signin_saml/samlp/metadata

Azure AD B2C에 SAML 애플리케이션 등록

Azure AD B2C에서 애플리케이션을 신뢰하려면 Azure AD B2C 애플리케이션 등록을 만듭니다. 이 등록에는 애플리케이션의 메타데이터 엔드포인트와 같은 구성 정보가 포함됩니다.

  1. Azure Portal에 로그인합니다.
  2. Azure AD B2C 테넌트가 포함된 디렉터리를 사용하고 있는지 확인합니다. 포털 도구 모음에서 디렉터리 + 구독 아이콘을 선택합니다.
  3. 포털 설정 | 디렉터리 + 구독 페이지의 디렉터리 이름 목록에서 Azure AD B2C 디렉터리를 찾은 다음, 전환을 선택합니다.
  4. 왼쪽 메뉴에서 Azure AD B2C를 선택합니다. 또는 전체 서비스를 선택한 다음 Azure AD B2C를 검색하여 선택합니다.
  5. 앱 등록을 선택한 다음, 새 등록을 선택합니다.
  6. 애플리케이션의 이름을 입력합니다. 예를 들어 SAMLApp1을 입력합니다.
  7. 지원되는 계정 유형에서 이 조직 디렉터리의 계정만을 선택합니다.
  8. 리디렉션 URI에서 을 선택한 다음, https://localhost를 입력합니다. 이 값은 나중에 애플리케이션 등록 매니페스트에서 수정합니다.
  9. 등록을 선택합니다.

Azure AD B2C에서 애플리케이션 구성

SAML 앱의 경우 애플리케이션 등록 매니페스트에서 여러 속성을 구성해야 합니다.

  1. Azure Portal에서, 이전 섹션에서 만든 애플리케이션 등록으로 이동합니다.
  2. 관리에서 매니페스트를 선택하여 매니페스트 편집기를 엽니다. 그런 다음, 다음 섹션에 설명된 속성을 수정합니다.

식별자 추가

SAML 애플리케이션이 Azure AD B2C에 요청하면 SAML AuthN 요청에 Issuer 특성이 포함됩니다. 이 특성의 값은 일반적으로 애플리케이션의 메타데이터 entityID 값과 같습니다. Azure AD B2C는 이 값을 사용하여 디렉터리에서 애플리케이션 등록을 조회하고 구성을 읽습니다. 이 조회가 성공하려면 애플리케이션 등록의 identifierUriIssuer 특성과 일치하는 값으로 채워져야 합니다.

등록 매니페스트에서 identifierURIs 매개 변수를 찾아 적절한 값을 추가합니다. 이 값은 애플리케이션에서 EntityId에 대해 SAML AuthN 요청에 구성된 값 및 애플리케이션의 메타데이터에 있는 entityID 값과 동일합니다. 또한 accessTokenAcceptedVersion 매개 변수를 찾아 값을 2로 설정해야 합니다.

중요

accessTokenAcceptedVersion2로 업데이트하지 않으면 확인된 도메인이 필요한 오류 메시지가 표시됩니다.

다음 예는 SAML 메타데이터의 entityID 값을 보여줍니다.

<EntityDescriptor ID="id123456789" entityID="https://samltestapp2.azurewebsites.net" validUntil="2099-12-31T23:59:59Z" xmlns="urn:oasis:names:tc:SAML:2.0:metadata">

identifierUris 속성은 도메인 tenant-name.onmicrosoft.com의 URL만 허용합니다.

"identifierUris":"https://tenant-name.onmicrosoft.com",

Azure AD B2C와 애플리케이션의 메타데이터 공유

identifierUri 값에 의해 애플리케이션 등록이 로드된 후 Azure AD B2C는 애플리케이션의 메타데이터를 사용하여 SAML AuthN 요청의 유효성을 검사하고 응답 방법을 결정합니다.

애플리케이션에서 공개적으로 액세스할 수 있는 메타데이터 엔드포인트를 노출하는 것이 좋습니다.

SAML 메타데이터 URL과 애플리케이션 등록 매니페스트에 둘 다 지정된 속성은 병합됩니다. 메타데이터 URL에 지정된 속성이 먼저 처리되고 우선 적용됩니다.

SAML 테스트 애플리케이션을 예로 사용하면 애플리케이션 매니페스트에서 samlMetadataUrl에 다음 값을 사용합니다.

"samlMetadataUrl":"https://samltestapp2.azurewebsites.net/Metadata",

어설션 소비자 URL 재정의 또는 설정(선택 사항)

Azure AD B2C가 SAML 응답을 보내는 회신 URL을 구성할 수 있습니다. 회신 URL은 애플리케이션 매니페스트에서 구성할 수 있습니다. 이 구성은 애플리케이션에서 공개적으로 액세스 가능한 메타데이터 엔드포인트를 노출하지 않는 경우 유용합니다.

SAML 애플리케이션에 대한 회신 URL은 애플리케이션이 SAML 응답을 수신해야 하는 엔드포인트입니다. 다음 예와 같이 애플리케이션은 일반적으로 메타데이터 문서에서 이 URL을 AssertionConsumerService 요소의 Location 특성으로 제공합니다.

<SPSSODescriptor AuthnRequestsSigned="false" WantAssertionsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
    ...
    <AssertionConsumerService index="0" isDefault="true" Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://samltestapp2.azurewebsites.net/SP/AssertionConsumer" />        
</SPSSODescriptor>

애플리케이션의 메타데이터 AssertionConsumerService 요소가 누락되었거나 이를 재정의하려는 경우 애플리케이션 등록 매니페스트 replyUrlsWithType 속성을 구성합니다. Azure AD B2C는 replyUrlsWithType을 사용하여 사용자가 HTTP-POST 바인딩 유형을 사용하여 로그인한 후 리디렉션합니다.

SAML 테스트 애플리케이션을 예로 들어 replyUrlsWithTypeurl 속성을 다음 JSON 조각에 표시된 값으로 설정합니다.

"replyUrlsWithType":[
  {
    "url":"https://samltestapp2.azurewebsites.net/SP/AssertionConsumer",
    "type":"Web"
  }
],

로그아웃 URL 재정의 또는 설정(선택 사항)

로그아웃 URL은 로그아웃 요청 후 사용자를 리디렉션할 위치를 정의합니다. 다음 예와 같이 애플리케이션은 일반적으로 메타데이터 문서에서 이 URL을 SingleLogoutService 요소의 Location 특성으로 제공합니다.

<SPSSODescriptor AuthnRequestsSigned="false" WantAssertionsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
    <SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://samltestapp2.azurewebsites.net/logout" ResponseLocation="https://samltestapp2.azurewebsites.net/logout" />

</SPSSODescriptor>

애플리케이션의 메타데이터 SingleLogoutService 요소가 누락된 경우 애플리케이션 등록 매니페스트 logoutUrl 속성을 구성합니다. Azure AD B2C는 logoutURL을 사용하여 사용자가 HTTP-Redirect 바인딩 유형을 사용하여 로그아웃한 후 리디렉션합니다.

SAML 테스트 애플리케이션을 예로 사용하여 logoutUrl 속성을 https://samltestapp2.azurewebsites.net/logout로 설정합니다.

"logoutUrl": "https://samltestapp2.azurewebsites.net/logout",

참고

samlMetadataUrl 속성을 통해 애플리케이션의 메타데이터 엔드포인트를 채우지 않고 애플리케이션 매니페스트에서 응답 URL과 로그아웃 URL을 구성하도록 선택하면 Azure AD B2C가 SAML 요청 서명의 유효성을 검사하지 않습니다. SAML 응답도 암호화하지 않습니다.

SAML 애플리케이션에서 Azure AD B2C를 SAML IdP로 구성

마지막 단계는 SAML 애플리케이션에서 Azure AD B2C를 SAML IdP로 사용하도록 설정하는 것입니다. 각 애플리케이션은 다르며 단계도 다릅니다. 자세한 내용은 앱 설명서를 참조하세요.

메타데이터는 애플리케이션에서 정적 메타데이터동적 메타데이터로 구성할 수 있습니다. 정적 모드에서 Azure AD B2C 정책 메타데이터 전체 또는 일부를 복사합니다. 동적 모드에서 메타데이터에 대한 URL을 제공하고 애플리케이션에서 메타데이터를 동적으로 읽을 수 있도록 합니다.

일반적으로 다음 중 일부 또는 전부가 필요합니다.

  • 메타데이터: https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/<policy-name>/Samlp/metadata 형식을 사용합니다.

  • 발급자: SAML 요청의 issuer 값이 애플리케이션 등록 매니페스트의 identifierUris 요소에 구성된 URI 중 하나와 일치해야 합니다. SAML 요청의 issuer 이름이 identifierUris 요소에 없으면 애플리케이션 등록 매니페스트에 이를 추가합니다. 예: https://contoso.onmicrosoft.com/app-name.

  • 로그인 URL, SAML 엔드포인트, SAML URL: <SingleSignOnService> XML 요소에 대한 Azure AD B2C SAML 정책 메타데이터 파일의 값을 확인합니다.

  • 인증서: 이 인증서는 B2C_1A_SamlIdpCert이며, 프라이빗 키가 없습니다. 인증서의 퍼블릭 키를 가져오려면:

    1. 앞에서 지정한 메타데이터 URL로 이동합니다.
    2. <X509Certificate> 요소에서 값을 복사합니다.
    3. 텍스트 파일에 붙여넣습니다.
    4. 텍스트 파일을 .cer 파일로 저장합니다.

SAML 테스트 앱을 사용하여 테스트

SAML 테스트 애플리케이션을 사용하여 구성을 테스트할 수 있습니다.

  • 테넌트 이름을 업데이트합니다.
  • 정책 이름을 업데이트합니다. 예를 들어 B2C_1A_signup_signin_saml을 사용합니다.
  • 발급자 URI를 지정합니다. 애플리케이션 등록 매니페스트의 identifierUris 요소에 있는 URI 중 하나를 사용합니다. 예를 들면 https://contoso.onmicrosoft.com/app-name를 사용합니다.

로그인을 선택하면 사용자 로그인 화면이 표시됩니다. 로그인하면 SAML 응답이 다시 샘플 애플리케이션에 발급됩니다.

지원되는 SAML 형식 및 지원되지 않는 SAML 형식

다음 SAML 애플리케이션 시나리오는 고유한 메타데이터 엔드포인트를 통해 지원됩니다.

  • 애플리케이션 또는 서비스 주체 개체에서 여러 로그아웃 URL 또는 로그아웃 URL의 POST 바인딩을 지정합니다.
  • 애플리케이션 또는 서비스 주체 개체에서 신뢰 당사자 요청을 확인하기 위한 서명 키를 지정합니다.
  • 애플리케이션 또는 서비스 주체 개체에서 토큰 암호화 키를 지정합니다.
  • IdP 시작 로그온을 지정합니다. 여기서 ID 공급자는 Azure AD B2C입니다.

다음 단계