다음을 통해 공유


Azure Active Directory B2C에서 암호에 대한 복잡성 요구 사항 구성

중요합니다

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

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

Azure AD B2C(Azure Active Directory B2C)는 계정을 만들 때 최종 사용자가 제공하는 암호에 대한 복잡성 요구 사항 변경을 지원합니다. 기본적으로 Azure AD B2C는 강력한 암호를 사용합니다. Azure AD B2C는 고객이 사용할 수 있는 암호의 복잡성을 제어하는 구성 옵션도 지원합니다.

필수 조건

암호 규칙 적용

등록 또는 암호 재설정 중에 최종 사용자는 복잡성 규칙을 충족하는 암호를 제공해야 합니다. 암호 복잡성 규칙은 사용자 흐름별로 적용됩니다. 등록하는 동안 한 사용자 흐름에 4자리 핀이 필요하고 다른 사용자 흐름에는 등록 중에 8자 문자열이 필요할 수 있습니다. 성인의 경우 자녀와는 다른 암호 복잡성을 사용하는 사용자 흐름을 예로 들 수 있습니다.

로그인하는 동안 암호 복잡성은 적용되지 않습니다. 로그인하는 동안 사용자에게 현재 복잡성 요구 사항을 충족하지 않으므로 암호를 변경하라는 메시지가 표시되지 않습니다.

다음과 같은 유형의 사용자 흐름에서 암호 복잡성을 구성할 수 있습니다.

  • 사용자 등록 및 로그인 흐름
  • 사용자 암호 재설정 흐름

사용자 지정 정책을 사용하는 경우 사용자 지정 정책에서 암호 복잡성을 구성할 수 있습니다.

암호 복잡성 구성

  1. Azure Portal에 로그인합니다.
  2. 여러 테넌트에 액세스할 수 있는 경우 상단 메뉴의 설정 아이콘을 선택하여 디렉터리 + 구독 메뉴에서 Azure AD B2C 테넌트로 전환합니다.
  3. Azure Portal에서 Azure AD B2C를 검색하고 선택합니다.
  4. 사용자 흐름을 선택합니다.
  5. 사용자 흐름을 선택하고 속성을 선택합니다.
  6. 암호 복잡성에서 이 사용자 흐름의 암호 복잡성을 Simple, Strong 또는 Custom으로 변경합니다.

비교 차트

복잡성 설명
단순 8~64자 이상의 암호입니다.
강력 8~64자 이상의 암호입니다. 소문자, 대문자, 숫자 또는 기호 중 4개 중 3개가 필요합니다.
관습 이 옵션은 암호 복잡성 규칙을 가장 제어할 수 있습니다. 사용자 지정 길이를 구성할 수 있습니다. 또한 숫자 전용 암호(핀)를 수락할 수 있습니다.

사용자 지정 옵션

문자 집합

숫자만(핀) 또는 전체 문자 집합을 허용할 수 있습니다.

  • 숫자는 암호를 입력하는 동안에만 숫자(0-9)만 허용합니다.
  • 모든 문자, 숫자 또는 기호를 허용합니다.

길이

암호의 길이 요구 사항을 제어할 수 있습니다.

  • 최소 길이 는 4 이상이어야 합니다.
  • 최대 길이는 최소 길이보다 크거나 같아야 하며 최대 256자일 수 있습니다.

문자 클래스

암호에 사용되는 다양한 문자 형식을 제어할 수 있습니다.

  • 2/4: 소문자, 대문자, 숫자(0-9), 기호 는 암호에 두 개 이상의 문자 형식을 포함하도록 합니다. 예를 들어 숫자와 소문자 문자입니다.

  • 3/4: 소문자, 대문자, 숫자(0-9), 기호 는 암호에 세 개 이상의 문자 형식을 포함하도록 합니다. 예를 들어 숫자, 소문자 및 대문자입니다.

  • 4/4: 소문자, 대문자, 숫자(0-9), 기호 는 암호에 네 가지 문자 형식을 모두 포함하도록 합니다.

    비고

    4/4를 요구하면 최종 사용자가 좌절할 수 있습니다. 일부 연구에 따르면 이 요구 사항은 암호 엔트로피를 개선하지 않습니다. NIST 암호 지침 참조

암호 조건자 유효성 검사

암호 복잡성을 구성하려면 newPassword에 대한 참조를 통해 reenterPassword클레임 형식을 재정의합니다. PredicateValidations 요소는 조건자 집합을 그룹화하여 클레임 형식에 적용할 수 있는 사용자 입력 유효성 검사를 형성합니다. 정책의 확장 파일을 엽니다. 예: SocialAndLocalAccounts/TrustFrameworkExtensions.xml.

  1. BuildingBlocks 요소를 검색합니다. 요소가 없으면 추가합니다.

  2. ClaimsSchema 요소를 찾습니다. 요소가 없으면 추가합니다.

  3. newPasswordreenterPassword 클레임을 ClaimsSchema 요소에 추가합니다.

    <!-- 
    <BuildingBlocks>
      <ClaimsSchema> -->
        <ClaimType Id="newPassword">
          <PredicateValidationReference Id="CustomPassword" />
        </ClaimType>
        <ClaimType Id="reenterPassword">
          <PredicateValidationReference Id="CustomPassword" />
        </ClaimType>
      <!-- 
      </ClaimsSchema>
    </BuildingBlocks>-->
    
  4. 조건자는 클레임 형식의 값을 확인하는 기본 유효성 검사를 정의하고 true 또는 false를 반환합니다. 유효성 검사는 지정된 메서드 요소 및 메서드와 관련된 매개 변수 집합을 사용하여 수행됩니다. 요소를 닫은 직후 </ClaimsSchema> 요소에 다음 술어를 추가합니다.

    <!-- 
    <BuildingBlocks>-->
      <Predicates>
        <Predicate Id="LengthRange" Method="IsLengthRange">
          <UserHelpText>The password must be between 6 and 64 characters.</UserHelpText>
          <Parameters>
            <Parameter Id="Minimum">6</Parameter>
            <Parameter Id="Maximum">64</Parameter>
          </Parameters>
        </Predicate>
        <Predicate Id="Lowercase" Method="IncludesCharacters">
          <UserHelpText>a lowercase letter</UserHelpText>
          <Parameters>
            <Parameter Id="CharacterSet">a-z</Parameter>
          </Parameters>
        </Predicate>
        <Predicate Id="Uppercase" Method="IncludesCharacters">
          <UserHelpText>an uppercase letter</UserHelpText>
          <Parameters>
            <Parameter Id="CharacterSet">A-Z</Parameter>
          </Parameters>
        </Predicate>
        <Predicate Id="Number" Method="IncludesCharacters">
          <UserHelpText>a digit</UserHelpText>
          <Parameters>
            <Parameter Id="CharacterSet">0-9</Parameter>
          </Parameters>
        </Predicate>
        <Predicate Id="Symbol" Method="IncludesCharacters">
          <UserHelpText>a symbol</UserHelpText>
          <Parameters>
            <Parameter Id="CharacterSet">@#$%^&amp;*\-_+=[]{}|\\:',.?/`~"();!</Parameter>
          </Parameters>
        </Predicate>
      </Predicates>
    <!-- 
    </BuildingBlocks>-->
    
  5. 요소를 닫은 직후에 </Predicates> 요소에 다음 조건 검증을 추가합니다.

    <!-- 
    <BuildingBlocks>-->
      <PredicateValidations>
        <PredicateValidation Id="CustomPassword">
          <PredicateGroups>
            <PredicateGroup Id="LengthGroup">
              <PredicateReferences MatchAtLeast="1">
                <PredicateReference Id="LengthRange" />
              </PredicateReferences>
            </PredicateGroup>
            <PredicateGroup Id="CharacterClasses">
              <UserHelpText>The password must have at least 3 of the following:</UserHelpText>
              <PredicateReferences MatchAtLeast="3">
                <PredicateReference Id="Lowercase" />
                <PredicateReference Id="Uppercase" />
                <PredicateReference Id="Number" />
                <PredicateReference Id="Symbol" />
              </PredicateReferences>
            </PredicateGroup>
          </PredicateGroups>
        </PredicateValidation>
      </PredicateValidations>
    <!-- 
    </BuildingBlocks>-->
    

강력한 암호 사용 안 함

다음 기술 프로필은 Microsoft Entra ID에 데이터를 읽고 쓰는 Active Directory 기술 프로필입니다. 확장 파일에서 이러한 기술 프로필을 재정의합니다. 강력한 암호 정책을 사용하지 않도록 설정하는 데 사용합니다 PersistedClaims . ClaimsProviders 요소를 찾습니다. 다음과 같이 다음 클레임 공급자를 추가합니다.

<!-- 
<ClaimsProviders>-->
  <ClaimsProvider>
    <DisplayName>Azure Active Directory</DisplayName>
    <TechnicalProfiles>
      <TechnicalProfile Id="AAD-UserWriteUsingLogonEmail">
        <PersistedClaims>
          <PersistedClaim ClaimTypeReferenceId="passwordPolicies" DefaultValue="DisablePasswordExpiration, DisableStrongPassword"/>
        </PersistedClaims>
      </TechnicalProfile>
      <TechnicalProfile Id="AAD-UserWritePasswordUsingObjectId">
        <PersistedClaims>
          <PersistedClaim ClaimTypeReferenceId="passwordPolicies" DefaultValue="DisablePasswordExpiration, DisableStrongPassword"/>
        </PersistedClaims>
      </TechnicalProfile>
    </TechnicalProfiles>
  </ClaimsProvider>
<!-- 
</ClaimsProviders>-->

사용자 이름 기반 로그인 정책을 사용하는 경우 AAD-UserWriteUsingLogonEmail, AAD-UserWritePasswordUsingObjectId, 및 LocalAccountWritePasswordUsingObjectId 기술 프로필을 DisableStrongPassword 정책으로 업데이트합니다.

정책 파일을 저장합니다.

정책 테스트

파일 업로드

  1. Azure Portal에 로그인합니다.
  2. 여러 테넌트에 액세스할 수 있는 경우 상단 메뉴의 설정 아이콘을 선택하여 디렉터리 + 구독 메뉴에서 Azure AD B2C 테넌트로 전환합니다.
  3. Azure Portal의 왼쪽 상단 모서리에서 모든 서비스를 선택하고 Azure AD B2C를 검색하여 선택합니다.
  4. ID 경험 프레임워크를 선택합니다.
  5. 사용자 지정 정책 페이지에서 정책 업로드를 선택합니다.
  6. 정책 덮어쓰기(있는 경우)를 선택한 다음 ,TrustFrameworkExtensions.xml 파일을 검색하여 선택합니다.
  7. 업로드선택합니다.

정책 실행

  1. 등록 또는 로그인 정책(예: B2C_1A_signup_signin)을 엽니다.
  2. 애플리케이션의 경우 이전에 등록한 애플리케이션을 선택합니다. 토큰을 보려면 회신 URL 이 표시됩니다 https://jwt.ms.
  3. 지금 실행을 선택합니다.
  4. 지금 등록을 선택하고, 전자 메일 주소를 입력하고, 새 암호를 입력합니다. 암호 제한에 대한 지침이 제공됩니다. 사용자 정보 입력을 완료한 다음 만들기를 선택합니다. 반환된 토큰의 내용이 표시됩니다.