Azure Active Directory B2C의 Single Sign-On 세션 공급자

Azure Active Directory B2C의 세션 동작 구성 문서에서는 Azure AD B2C 사용자 지정 정책에 대한 세션 관리에 대해 설명합니다. 이 문서에서는 사용자 지정 정책 내에서 개별 기술 프로필의 SSO(Single Sign-On) 동작을 추가로 구성하는 방법을 설명합니다.

예를 들어 테넌트 전체 SSO에 대한 정책을 구성하지만 활성 SSO 세션에 관계없이 항상 다단계 단계를 수행하려고 합니다. 다단계 기술 프로필의 세션 공급자를 구성하여 이 동작을 수행할 수 있습니다.

다음 두 흐름에 세션 공급자를 적용할 수 있습니다.

  • 새 로그온
    • 사용자가 처음으로 로그인하면 세션이 없습니다. 세션 공급자를 사용하는 모든 기술 프로필은 세션 참가자가 됩니다.
    • 세션 공급자는 세션 쿠키에 클레임을 쓸 수 있습니다.
  • 후속 로그온
    • 사용자에게 활성 세션이 있는 경우 세션 쿠키의 일부인 클레임이 클레임 모음으로 읽혀집니다.
    • 세션 쿠키의 일부인 클레임은 업데이트할 수 없습니다.
    • 세션 공급자는 클레임 모음에 추가 클레임을 발급할 수 있으며, 이는 이 기술 프로필이 SSO 조건에서 실행되었음을 나타냅니다.
    • 기술 프로필은 건너뛸 수 있습니다.

지정된 기술 프로필에 대해 선택한 세션 관리 공급자에 따라 세션 동작이 활성화되거나 제거될 수 있습니다. 다음 목록에서는 세션 공급자를 사용하는 몇 가지 가능한 예제를 제공합니다.

  • 후속 로그온(SSO) 중에 사용자 인터페이스 중단을 방지하거나 적용합니다.
  • 후속 로그온(SSO) 중에 선택한 ID 공급자를 기억합니다.
  • 후속 로그온(SSO) 중에 디렉터리에 대한 읽기 작업 수를 줄입니다.
  • 소셜 ID 공급자 세션을 추적하여 ID 공급자 로그아웃을 수행합니다.
  • Single Sign-Out을 위해 로그인한 신뢰 당사자 애플리케이션을 추적합니다.

세션 공급자

기술 프로필이 SSO 세션을 처리하는 방법을 관리하는 데 사용할 수 있는 5개의 세션 공급자가 있습니다. 기술 프로필을 구성할 때 가장 적합한 세션 공급자를 선택해야 합니다.

다음 표에서는 관리하려는 기술 프로필의 유형에 따라 사용할 세션 공급자를 보여줍니다. 일부 세션 공급자는 세션 쿠키에 대한 클레임을 읽고 쓸 수 있습니다.

세션 공급자 적용 가능한 기술 프로필 유형 목적 클레임 쓰기 클레임 읽기
DefaultSSOSessionProvider 자체 어설션, Microsoft Entra ID, Microsoft Entra 다단계 인증, 클레임 변환 기술 프로필 실행을 건너뜁니다.
ExternalLoginSSOSessionProvider OAuth1 ID 공급자, Oauth2 ID 공급자, OpenID Connect ID 공급자, SAML ID 공급자 ID 공급자 선택 페이지를 가속화합니다. 단일 로그아웃을 수행합니다.
OAuthSSOSessionProvider JWT 토큰 발급자 OAuth2 또는 OpenId Connect 신뢰 당사자 애플리케이션과 Azure AD B2C 간 세션을 관리합니다. 단일 로그아웃을 수행합니다.
SamlSSOSessionProvider SAML 토큰 발급자 SAML 신뢰 당사자와 Azure AD B2C 간 세션을 관리합니다. 단일 로그아웃을 수행합니다. 아니요
NoopSSOSessionProvider 모두 모든 기술 프로필이 세션에 포함되지 않도록 합니다. 아니요

다음 다이어그램은 Azure AD B2C에서 사용하는 세션 유형을 보여줍니다.

Azure AD B2C 유형의 세션 공급자를 보여 주는 다이어그램

세션 공급자 참조

기술 프로필에서 세션 공급자를 사용하려면 다음을 수행합니다.

  1. 적절한 세션 관리 기술 프로필을 만듭니다. Azure AD B2C 시작 팩에는 가장 일반적인 세션 관리 기술 프로필이 포함되어 있습니다. 해당하는 경우 기존 세션 관리 기술 프로필을 참조할 수 있습니다.

    다음 XML 조각은 시작 팩의 SM-AAD 세션 관리 기술 프로필을 보여줍니다. 제공된 세션은 DefaultSSOSessionProvider 형식입니다.

    <TechnicalProfile Id="SM-AAD">
      <DisplayName>Session Mananagement Provider</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.DefaultSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <PersistedClaims>
        <PersistedClaim ClaimTypeReferenceId="objectId" />
        <PersistedClaim ClaimTypeReferenceId="signInName" />
        <PersistedClaim ClaimTypeReferenceId="authenticationSource" />
        <PersistedClaim ClaimTypeReferenceId="identityProvider" />
        <PersistedClaim ClaimTypeReferenceId="newUser" />
        <PersistedClaim ClaimTypeReferenceId="executed-SelfAsserted-Input" />
      </PersistedClaims>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="objectIdFromSession" DefaultValue="true" />
      </OutputClaims>
    </TechnicalProfile>
    
  2. 기술 프로필 내에서 세션 관리 기술 프로필을 참조합니다. 이를 통해 후속 로그온(SSO) 중에 해당 기술 프로필의 동작을 제어할 수 있습니다.

    기술 프로필에서 세션 관리 기술 프로필을 참조하려면 UseTechnicalProfileForSessionManagement 요소를 추가합니다. 다음 예제는 SM-AAD 세션 관리 기술 프로필의 사용을 보여줍니다. ReferenceId를 세션 관리 기술 프로필의 ID로 변경합니다.

    <TechnicalProfile Id="{Technical-profile-ID}">
      ...
      <UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" />
    </TechnicalProfile>
    

중요

기술 프로필이 세션 관리 공급자를 참조하지 않으면 DefaultSSOSessionProvider 세션 공급자가 적용되어 예기치 않은 동작이 발생할 수 있습니다.

참고

새로 고침 토큰 흐름 중에는 세션 관리 공급자가 호출되지 않습니다. 새 액세스 토큰을 발급하려는 모든 시도는 발급된 원래 클레임의 복사본입니다.

세션 클레임 관리

세션 관리 기술 프로필은 사용자 지정 정책 실행 중에 읽거나 쓰거나 출력할 수 있는 클레임을 제어합니다.

세션 관리 기술 프로필 내에서 PersistedClaimsOutputClaims 요소를 사용하여 클레임을 관리합니다.

  • 지속형 클레임 - 세션 쿠키에 쓸 수 있는 클레임입니다.
    • 클레임을 세션 쿠키에 기록하려면 현재 클레임 모음의 일부여야 합니다.
    • 기록된 모든 클레임은 후속 로그온(Single Sign-On) 중에 자동으로 반환됩니다. 출력 클레임을 지정할 필요가 없습니다.
  • 출력 클레임 - 후속 로그온(Single Sign-On) 중에 클레임 모음에 출력될 수 있는 추가 클레임입니다. 출력 클레임은 세션에서 반환되지 않으므로 기본값을 설정해야 합니다.

지속형 및 출력 클레임 요소는 다음 XML 조각에 설명되어 있습니다.

<TechnicalProfile Id="SM-AAD">
  <DisplayName>Session Management Provider</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.DefaultSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <PersistedClaims>
    <PersistedClaim ClaimTypeReferenceId="objectId" />
  </PersistedClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="objectIdFromSession" DefaultValue="true"/>
  </OutputClaims>
</TechnicalProfile>

다음과 작업 수행 중 클레임을 관리하도록 DefaultSSOSessionProviderExternalLoginSSOSessionProvider 세션 관리 공급자를 구성할 수 있습니다.

  • 새 로그온
    • PersistedClaims 요소는 세션 쿠키에 클레임을 씁니다. 지속형 클레임은 다시 작성할 수 없습니다.
  • 후속 로그온
    • 세션 쿠키에 기록된 모든 클레임은 다음 오케스트레이션 단계에서 사용할 수 있는 클레임 모음으로 출력됩니다.
    • OutputClaims 요소는 클레임 모음에 정적 클레임을 출력합니다. DefaultValue 특성을 사용하여 출력 클레임의 값을 설정합니다.

DefaultSSOSessionProvider

DefaultSSOSessionProvider 세션 공급자는 후속 로그온(Single Sign-On) 중에 클레임을 관리하고 기술 프로필을 건너뛰도록 구성할 수 있습니다. DefaultSSOSessionProvider는 후속 로그온(Single Sign-On) 중에 가져올 수 없는 후속 오케스트레이션 단계에 필요한 클레임을 유지하고 발행하는 데 사용해야 합니다. 예를 들어 디렉터리에서 사용자 개체를 읽을 때 얻을 수 있는 클레임입니다.

다음 SM-AAD 기술 프로필은 DefaultSSOSessionProvider 세션 공급자 유형입니다. SM-AAD 기술 프로필은 사용자 지정 정책 시작 팩에서 찾을 수 있습니다.

<TechnicalProfile Id="SM-AAD">
  <DisplayName>Session Management Provider</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.DefaultSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <PersistedClaims>
    <PersistedClaim ClaimTypeReferenceId="objectId" />
    <PersistedClaim ClaimTypeReferenceId="signInName" />
    <PersistedClaim ClaimTypeReferenceId="authenticationSource" />
    <PersistedClaim ClaimTypeReferenceId="identityProvider" />
    <PersistedClaim ClaimTypeReferenceId="newUser" />
    <PersistedClaim ClaimTypeReferenceId="executed-SelfAsserted-Input" />
  </PersistedClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="objectIdFromSession" DefaultValue="true"/>
  </OutputClaims>
</TechnicalProfile>

예를 들어 SM-AAD 세션 관리 기술 프로필은 DefaultSSOSessionProvider 세션 공급자를 사용합니다. 사용자 지정 정책 시작 팩SelfAsserted-LocalAccountSignin-Email 기술 프로필에 적용하면 다음과 같이 작동합니다.

  • 새 로그온
    • signInName은 세션 관리 기술 프로필(SM-AAD)이 지속되도록 signInName으로 구성되고 SM-AAD를 참조하는 기술 프로필에 signInName에 대한 OutputClaim이 포함되기 때문에 세션 쿠키에 기록됩니다. 이 동작은 이 패턴을 충족하는 모든 클레임에 적용할 수 있습니다.
  • 후속 로그온
    • 기술 프로필을 건너뛰고 사용자에게 로그인 페이지가 표시되지 않습니다.
    • 클레임 모음에는 새 로그인 시 유지된 세션 쿠키의 signInName 값과 세션 쿠키에 유지되는 패턴을 충족하는 다른 모든 클레임이 포함됩니다.
    • 세션 공급자의 Output 클레임이 후속 로그온(Single Sign-On) 중에 처리되므로 세션 관리 기술 프로필은 objectIdFromSession 클레임을 반환합니다. 이 경우 클레임 모음에 있는 objectIdFromSession 클레임은 Single Sign-On으로 인해 사용자의 클레임이 세션 쿠키에서 들어오고 있음을 나타냅니다.

ExternalLoginSSOSessionProvider

ExternalLoginSSOSessionProvider 세션 공급자는 "ID 공급자 선택" 화면을 건너뛰고 페더레이션 ID 공급자에서 로그아웃하는 데 사용됩니다. 일반적으로 Facebook 또는 Microsoft Entra ID 등의 페더레이션 ID 공급자를 위해 구성된 기술 프로필에서 참조됩니다.

  • 새 로그온
    • PersistedClaims 요소는 세션 쿠키에 클레임을 씁니다. 지속형 클레임은 다시 작성할 수 없습니다.
  • 후속 로그온
    • 세션 쿠키에 기록된 모든 클레임은 다음 오케스트레이션 단계에서 사용할 수 있는 클레임 모음으로 출력됩니다.
    • OutputClaims 요소는 클레임 모음에 정적 클레임을 출력합니다. 클레임 값을 설정하는 DefaultValue 특성을 사용합니다.
    • 세션 관리 기술 프로필을 참조하는 기술 프로필에 세션 쿠키에 유지된 OutputClaim이 포함된 경우 이 기술 프로필은 건너뜁니다.

다음 SM-SocialLogin 기술 프로필은 ExternalLoginSSOSessionProvider 세션 공급자 유형입니다. SM-SocialLogin 기술 프로필은 사용자 지정 정책 시작 팩에서 찾을 수 있습니다.

<TechnicalProfile Id="SM-SocialLogin">
  <DisplayName>Session Management Provider</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.ExternalLoginSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <PersistedClaims>
    <PersistedClaim ClaimTypeReferenceId="AlternativeSecurityId" />
  </PersistedClaims>
</TechnicalProfile>

AlternativeSecurityId 클레임은 사용자가 외부 ID 공급자로 로그인할 때 생성됩니다. 외부 ID 공급자 사용자의 고유 식별자를 나타냅니다. AlternativeSecurityId 클레임은 Single Sign-On 사용자 경험에서 페더레이션 ID 공급자와의 상호 작용 없이 디렉터리에서 사용자의 프로필을 읽을 수 있도록 유지됩니다.

외부 세션 제공자를 구성하려면 OAuth1, OAuth2 또는 OpenID Connect 기술 프로필에서 SM-SocialLogin에 대한 참조를 추가합니다. 예를 들어 Facebook-OAUTHSM-SocialLogin 세션 관리 기술 프로필을 사용합니다. 자세한 내용은 사용자 지정 정책 시작 팩을 참조하세요.

<TechnicalProfile Id="Facebook-OAUTH">
  ...
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" />
</TechnicalProfile>

OAuthSSOSessionProvider

OAuthSSOSessionProvider 세션 공급자는 OAuth2 또는 OpenId Connect 신뢰 당사자와 Azure AD B2C 간의 Azure AD B2C 세션을 관리하는 데 사용됩니다. Azure AD B2C는 SLO(Single Log-Out)라고도 하는 Single Sign-Out을 지원합니다. 사용자가 Azure AD B2C 로그아웃 엔드포인트를 통해 로그아웃하면 Azure AD B2C는 브라우저에서 사용자의 세션 쿠키를 지웁니다. 하지만 사용자는 인증을 위해 Azure AD B2C를 사용하는 다른 애플리케이션에 여전히 로그인되어 있을 수 있습니다.

이 유형의 세션 공급자를 사용하면 Azure AD B2C에서 사용자가 로그인한 모든 OAuth2 또는 OpenId Connect 애플리케이션을 추적할 수 있습니다. 한 애플리케이션에서 로그아웃하는 동안 Azure AD B2C는 알려진 다른 모든 로그인 애플리케이션의 logout 엔드포인트를 호출하려고 시도합니다. 이 기능은 세션 공급자에 기본 제공됩니다. 구성할 수 있는 지속형 또는 출력 클레임이 없습니다. 다음 SM-jwt-issuer 기술 프로필은 OAuthSSOSessionProvider 세션 공급자 유형입니다.

<TechnicalProfile Id="SM-jwt-issuer">
  <DisplayName>Session Management Provider</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.OAuthSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</TechnicalProfile>

SM-jwt-issuer 기술 프로필은 JwtIssuer 기술 프로필에서 참조됩니다.

<TechnicalProfile Id="JwtIssuer">
  ...
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-jwt-issuer" />
</TechnicalProfile>

SamlSSOSessionProvider

SamlSSOSessionProvider 세션 공급자는 페더레이션된 SAML ID 공급자 또는 SAML 신뢰 당사자 애플리케이션 및 Azure AD B2C를 사용하여 세션 동작을 관리하는 데 사용됩니다.

SAML ID 공급자 세션 관리

SAML ID 공급자 세션에서 SamlSSOSessionProvider 세션 공급자를 참조하는 경우 RegisterServiceProvidersfalse로 설정해야 합니다.

다음 SM-Saml-idp 기술 프로필은 SamlSSOSessionProvider 세션 공급자 유형입니다.

<TechnicalProfile Id="SM-Saml-idp">
  <DisplayName>Session Management Provider</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.SamlSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="RegisterServiceProviders">false</Item>
  </Metadata>
</TechnicalProfile>

SM-Saml-idp 세션 관리 기술 프로필을 사용하려면 SAML ID 공급자 기술 프로필에 대한 참조를 추가합니다. 예를 들어 AD-FS SAML ID 공급자Contoso-SAML2SM-Saml-idp 세션 관리 기술 프로필을 사용합니다.

<TechnicalProfile Id="Contoso-SAML2">
  ...
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-Saml-idp" />
</TechnicalProfile>

SAML 서비스 공급자 세션 관리

SAML 신뢰 당사자 세션을 관리하기 위해 SamlSSOSessionProvider 세션 공급자를 참조하는 경우 RegisterServiceProviderstrue로 설정해야 합니다. SAML 세션 로그아웃을 완료하는 데 SessionIndexNameID가 필요합니다.

다음 SM-Saml-issuer 기술 프로필은 SamlSSOSessionProvider 세션 공급자 유형입니다.

<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>

SM-Saml-issuer 세션 관리 기술 프로필을 사용하려면 SAML 토큰 발급자 기술 프로필에 대한 참조를 추가합니다. 예를 들어 Saml2AssertionIssuer 기술 프로필은 SM-Saml-issuer 세션 관리 기술 프로필을 사용합니다.

<TechnicalProfile Id="Saml2AssertionIssuer">
  ...
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-Saml-issuer" />
</TechnicalProfile>

메타데이터

attribute 필수 Description
IncludeSessionIndex No 현재 사용되지 않습니다. 무시해도 됩니다.
RegisterServiceProviders No 공급자가 어설션을 발급한 모든 SAML 서비스 공급자를 등록해야 함을 의미합니다. 가능한 값은 true(기본값) 또는 false입니다.

NoopSSOSessionProvider

NoopSSOSessionProvider 세션 공급자는 Single Sign-On 동작을 표시하지 않는 데 사용됩니다. 이 유형의 세션 공급자를 사용하는 기술 프로필은 사용자가 활성 세션을 사용하는 경우에도 항상 처리됩니다. 이러한 유형의 세션 공급자는 특정 기술 프로필을 항상 실행하도록 강제하는 데 유용할 수 있습니다. 예를 들면 다음과 같습니다.

  • 클레임 변환 - 나중에 처리하거나 건너뛸 오케스트레이션 단계를 결정하는 데 사용되는 클레임을 만들거나 변환합니다.
  • Restful - 정책이 실행될 때마다 Restful 서비스에서 업데이트된 데이터를 가져옵니다. 확장 로깅 및 감사를 위해 Restful을 호출할 수도 있습니다.
  • 자체 어설션 - 정책이 실행될 때마다 사용자가 데이터를 제공하도록 강제합니다. 예를 들어 일회성 암호로 이메일을 확인하거나 사용자의 동의를 구합니다.
  • Phonefactor - 후속 로그온(Single Sign-On) 중에도 사용자가 "단계별 인증"의 일부로 다단계 인증을 수행하도록 강제합니다.

이 유형의 세션 공급자는 사용자의 세션 쿠키에 대한 클레임을 유지하지 않습니다. 다음 SM-Noop 기술 프로필은 NoopSSOSessionProvider 세션 공급자 유형입니다. SM-Noop 기술 프로필은 사용자 지정 정책 시작 팩에서 찾을 수 있습니다.

<TechnicalProfile Id="SM-Noop">
  <DisplayName>Noop Session Management Provider</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.NoopSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</TechnicalProfile>

기술 프로필의 Single Sign-On 동작을 표시하지 않으면 기술 프로필에 대한 참조를 SM-Noop에 추가합니다. 예를 들어 AAD-CommonSM-Noop 세션 관리 기술 프로필을 사용합니다. 자세한 내용은 사용자 지정 정책 시작 팩을 참조하세요.

<TechnicalProfile Id="AAD-Common">
  ...
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>

다음 단계

세션 동작에 관해 알아봅니다.