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

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

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

필수 조건

암호 규칙 적용

등록 또는 암호 재설정 중에 최종 사용자는 복잡성 규칙을 충족하는 암호를 제공해야 합니다. 암호 복잡성 규칙은 사용자 흐름별로 적용됩니다. 한 사용자 흐름은 등록 중에 4자리 PIN을 요구하고, 다른 사용자 흐름은 등록 중에 8개의 문자 문자열을 요구할 수 있습니다. 예를 들어 자식에 대한 경우보다 성인에 다양한 암호 복잡성을 포함한 사용자 흐름을 사용할 수 있습니다.

암호의 복잡성은 로그인 중에 적용되지 않습니다. 사용자는 로그인 중에 해당 암호를 변경하라는 메시지를 수신하지 않습니다. 현재 복잡성 요구 사항을 충족하지 않기 때문입니다.

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

  • 가입 또는 로그인 사용자 흐름
  • 암호 재설정 사용자 흐름

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

암호 복잡도 구성

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

비교 차트

복잡성 설명
단순 모드 암호가 8~64자 이상입니다.
강력 암호가 8~64자 이상입니다. 소문자, 대문자, 숫자 또는 기호와 같은 4개 항목 중 3가지가 필요합니다.
사용자 지정 이 옵션을 통해 암호 복잡성 규칙을 대부분 제어할 수 있습니다. 사용자 지정 길이를 구성할 수 있습니다. 숫자 전용 암호(PIN)를 허용할 수 있습니다.

사용자 지정 옵션

문자 집합

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

  • 번호만 해당을 사용하면 암호를 입력하는 동안 숫자(0~9)만을 허용합니다.
  • 모두를 사용하면 모든 문자, 숫자 또는 기호를 허용합니다.

Length

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

  • 최소 길이는 적어도 4여야 합니다.
  • 최대 길이는 최소 길이 이상이어야 하며 최대 256자까지 가능합니다.

문자 클래스

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

  • 소문자, 대문자, 숫자 (0-9), 기호 등 4개 항목 중 2가지를 통해 암호에 두 개 이상의 문자 형식을 포함하도록 합니다. 예를 들어, 숫자 및 소문자입니다.

  • 소문자, 대문자, 숫자(0~9), 기호 등 4개 항목 중 3가지를 통해 암호에 3개 이상의 문자 형식을 포함하도록 합니다. 예를 들어, 숫자, 소문자 및 대문자입니다.

  • 소문자, 대문자, 숫자 (0-9), 기호 등 4개 항목 중 4가지를 통해 암호에 전체 문자 형식을 포함하도록 합니다.

    참고 항목

    4개 항목 중 4가지로 인해 최종 사용자 불만이 발생할 수 있습니다. 일부 연구에서는 이 요구 사항이 암호 엔트로피를 개선하지 않는다고 합니다. NIST 암호 지침을 참조하세요.

암호 조건자 유효성 검사

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

  1. BuildingBlocks 요소를 검색합니다. 요소가 존재하지 않는 경우 추가합니다.

  2. ClaimsSchema 요소를 찾습니다. 요소가 존재하지 않는 경우 추가합니다.

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

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

    <!-- 
    <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 요소에 다음 조건자 유효성 검사를 추가합니다.

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

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

정책 파일을 저장합니다.

정책 테스트

파일 업로드

  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. 애플리케이션은 이전에 등록한 애플리케이션을 선택합니다. 토큰을 보려면 회신 URLhttps://jwt.ms가 표시되어야 합니다.
  3. 지금 실행을 선택합니다.
  4. 지금 등록을 선택하고, 메일 주소를 입력한 다음, 새 암호를 입력합니다. 지침은 암호 제한 사항에서 제공됩니다. 사용자 정보 입력을 완료한 후 만들기를 선택합니다. 반환된 토큰의 콘텐츠가 표시됩니다.

다음 단계