중요합니다
2025년 5월 1일부터 새 고객을 위해 Azure AD B2C를 더 이상 구매할 수 없습니다. FAQ에서 자세히 알아보세요.
시작하기 전에 이 페이지의 맨 위에 있는 정책 유형 선택기를 사용하여 설정하려는 정책 유형을 선택합니다. Azure Active Directory B2C는 미리 정의된 사용자 흐름 또는 완전히 구성 가능한 사용자 지정 정책을 통해 사용자가 애플리케이션과 상호 작용하는 방법을 정의하는 두 가지 방법을 제공합니다. 이 문서에서 필요한 단계는 각 방법마다 다릅니다.
등록 및 로그인 과정에서 사용자는 암호를 잊으셨나요? 링크를 사용하여 자신의 암호를 재설정할 수 있습니다. 이 셀프 서비스 암호 재설정 흐름은 로그인을 위해 암호가 있는 이메일 주소 또는 사용자 이름을 사용하는 Azure AD B2C(Azure Active Directory B2C)의 로컬 계정에 적용됩니다.
팁 (조언)
사용자는 암호를 잊어버리고 재설정하려는 경우 셀프 서비스 암호 재설정 흐름을 사용하여 암호를 변경할 수 있습니다. 다음 사용자 흐름 옵션 중 하나를 선택하여 사용자의 암호를 변경할 수도 있습니다.
- 사용자가 암호를 알고 있고 암호를 변경하려는 경우 암호 변경 흐름을 사용합니다.
- 사용자가 암호를 다시 설정하도록 강제하려는 경우(예: 처음으로 로그인할 때, 관리자가 암호를 재설정한 경우 또는 임의 암호로 Azure AD B2C로 마이그레이션된 후) 암호 재설정 흐름을 강제로 사용합니다.
암호 재설정 흐름에는 다음 단계가 포함됩니다.
- 등록 및 로그인 페이지에서 사용자가 암호를 잊으셨나요? 링크를 선택합니다. Azure AD B2C는 암호 재설정 흐름을 시작합니다.
- 표시되는 다음 대화 상자에서 사용자는 전자 메일 주소를 입력한 다음 확인 코드 보내기를 선택합니다. Azure AD B2C는 사용자의 이메일 계정에 확인 코드를 보냅니다. 사용자는 전자 메일에서 확인 코드를 복사하고, Azure AD B2C 암호 재설정 대화 상자에 코드를 입력한 다음, 코드 확인을 선택합니다.
- 그러면 사용자가 새 암호를 입력할 수 있습니다. (전자 메일을 확인한 후에도 사용자는 전자 메일 변경 단추를 선택할 수 있습니다. 전자 메일 변경 단추를 제거하려면 전자 메일 변경 단추 숨기기 를 참조하세요.)
selfAsserted.html전자 메일 변경 단추의 기본 이름은 changeclaims입니다. 단추 이름을 찾으려면, 회원가입 페이지에서 브라우저 도구인 검사를 사용하여 페이지 원본을 확인합니다.
필수 조건
- 사용자가 애플리케이션에 가입하고 로그인할 수 있도록 사용자 흐름을 만듭니다.
- 웹 애플리케이션 등록.
- Active Directory B2C에서 사용자 지정 정책을 사용하여 시작하기에 있는 단계를 완료합니다. 이 자습서에서는 Azure AD B2C 테넌트 구성을 사용하도록 사용자 지정 정책 파일을 업데이트하는 방법을 안내합니다.
- 웹 애플리케이션 등록.
- B2C 사용자는 셀프 서비스 암호 재설정을 위해 인증 방법을 지정해야 합니다. B2C 사용자를 선택하고 , 관리 아래의 왼쪽 메뉴에서 인증 방법을 선택합니다. 인증 연락처 정보가 설정되어 있는지 확인합니다. 등록 흐름을 통해 만든 B2C 사용자에게는 기본적으로 이 설정이 있습니다. Azure Portal 또는 Graph API를 통해 만든 사용자의 경우 SSPR이 작동하려면 인증 연락처 정보를 설정해야 합니다.
셀프 서비스 암호 재설정(권장)
이제 새 암호 재설정 환경이 등록 또는 로그인 정책의 일부입니다. 사용자가 암호를 잊으 셨나요? 링크를 선택하면 암호 잊기 환경으로 즉시 전송됩니다. 애플리케이션은 더 이상 AADB2C90118 오류 코드를 처리할 필요가 없으며 암호 재설정을 위한 별도의 정책이 필요하지 않습니다.
셀프 서비스 암호 재설정 환경은 로그인(권장) 또는 등록 및 로그인(권장) 사용자 흐름에 대해 구성할 수 있습니다. 이러한 사용자 흐름 설정 중 하나가 없는 경우 등록 또는 로그인 사용자 흐름을 만듭니다.
등록 또는 로그인 사용자 흐름에 대한 셀프 서비스 암호 재설정을 설정하려면 다음을 수행합니다.
- Azure Portal에 로그인합니다.
- 여러 테넌트에 액세스할 수 있는 경우 상단 메뉴의 설정 아이콘을 선택하여 디렉터리 + 구독 메뉴에서 Azure AD B2C 테넌트로 전환합니다.
- Azure Portal에서 Azure AD B2C를 검색하고 선택합니다.
- 사용자 흐름을 선택합니다.
- 사용자 지정하려는 등록 또는 로그인 사용자 흐름( 권장 형식)을 선택합니다.
- 설정 아래의 메뉴에서 속성을 선택합니다.
- 암호 구성에서 셀프 서비스 암호 재설정을 선택합니다.
- 저장을 선택합니다.
- 사용자 지정의 왼쪽 메뉴에서 페이지 레이아웃을 선택합니다.
- 페이지 레이아웃 버전에서 2.1.3 이상을 선택합니다.
- 저장을 선택합니다.
다음 섹션에서는 사용자 지정 정책에 셀프 서비스 암호 환경을 추가하는 방법을 설명합니다. 샘플은 사용자 지정 정책 시작 팩에 포함된 정책 파일을 기반으로 합니다.
팁 (조언)
GitHub에서 암호 재설정 정책으로 등록 및 로그인의 전체 샘플을 찾을 수 있습니다.
사용자가 '비밀번호를 잊으셨나요?' 링크를 선택했음을 표시하십시오.
사용자가 암호를 잊 으셨나요? 링크를 선택한 정책을 나타내려면 부울 클레임을 정의합니다. 클레임을 사용하여 사용자 경험을 암호 잊기 기술 프로필로 전달합니다. 또한 클레임을 토큰에 발급할 수 있으므로 애플리케이션은 암호 잊기 사용자 흐름을 사용하여 사용자가 로그인했음을 감지합니다.
클레임 스키마에서 클레임을 선언합니다. 정책의 확장 파일(예: SocialAndLocalAccounts/TrustFrameworkExtensions.xml)을 엽니다.
BuildingBlocks 요소를 검색합니다. 요소가 없으면 추가합니다.
ClaimsSchema 요소를 찾습니다. 요소가 없으면 추가합니다.
ClaimsSchema 요소에 다음 클레임을 추가합니다.
<!-- <BuildingBlocks> <ClaimsSchema> --> <ClaimType Id="isForgotPassword"> <DisplayName>isForgotPassword</DisplayName> <DataType>boolean</DataType> <AdminHelpText>Whether the user has selected Forgot your Password</AdminHelpText> </ClaimType> <!-- </ClaimsSchema> </BuildingBlocks> -->
페이지 레이아웃 버전 업그레이드
등록 또는 로그인 과정에서 셀프 서비스 암호 재설정 흐름을 사용하도록 설정하려면 페이지 레이아웃 버전 2.1.2가 필요합니다. 페이지 레이아웃 버전을 업그레이드하려면 다음을 수행합니다.
정책의 기본 파일(예: SocialAndLocalAccounts/TrustFrameworkBase.xml)을 엽니다.
BuildingBlocks 요소를 검색합니다. 요소가 없으면 추가합니다.
ContentDefinitions 요소를 찾습니다. 요소가 없으면 추가합니다.
Id를 갖도록 ContentDefinition 요소 내의
api.signuporsignin
요소를 수정합니다.<!-- <BuildingBlocks> <ContentDefinitions> --> <ContentDefinition Id="api.signuporsignin"> <DataUri>urn:com:microsoft:aad:b2c:elements:contract:unifiedssp:2.1.2</DataUri> </ContentDefinition> <!-- </ContentDefinitions> </BuildingBlocks> -->
기술 프로필 추가
클레임 변환 기술 프로필은 isForgotPassword
클레임에 접근합니다. 기술 프로필은 나중에 참조됩니다. 호출될 때 isForgotPassword
클레임의 값을 true
로 설정합니다.
- 정책의 확장 파일(예: SocialAndLocalAccounts/TrustFrameworkExtensions.xml)을 엽니다.
- ClaimsProviders 요소를 찾은 다음(요소가 없으면 만들고) 다음 클레임 공급자를 추가합니다.
<!--
<ClaimsProviders> -->
<ClaimsProvider>
<DisplayName>Local Account</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="ForgotPassword">
<DisplayName>Forgot your password?</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.ClaimsTransformationProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="isForgotPassword" DefaultValue="true" AlwaysUseDefaultValue="true"/>
</OutputClaims>
<UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>
<TechnicalProfile Id="SelfAsserted-LocalAccountSignin-Email">
<Metadata>
<Item Key="setting.forgotPasswordLinkOverride">ForgotPasswordExchange</Item>
</Metadata>
</TechnicalProfile>
<TechnicalProfile Id="LocalAccountWritePasswordUsingObjectId">
<UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" />
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
<!--
</ClaimsProviders> -->
SelfAsserted-LocalAccountSignin-Email 기술 프로필 설정.forgotPasswordLinkOverride는 사용자 경험에서 실행되는 암호 재설정 클레임 교환을 정의합니다.
LocalAccountWritePasswordUsingObjectId 기술 프로필 UseTechnicalProfileForSessionManagementSM-AAD
세션 관리자는 사용자가 SSO 조건에서 후속 로그인을 성공적으로 사전 구성해야 합니다.
암호 재설정 하위 프로세스를 추가합니다
이제 사용자는 사용자 경험에서 로그인, 등록 및 암호 재설정을 수행할 수 있습니다. 사용자 경험을 더 잘 구성하려면 하위 경험을 사용하여 암호 재설정 흐름을 처리할 수 있습니다.
하위 경험은 사용자 경험에서 호출되며 사용자에게 암호 재설정 환경을 제공하는 특정 단계를 수행합니다. 하위 여정이 완료되면, 제어가 하위 여정을 시작한 오케스트레이션 단계로 반환되도록 Call
형식의 하위 여정을 사용하세요.
- 정책의 확장 파일(예: SocialAndLocalAccounts/TrustFrameworkExtensions.xml)을 엽니다.
- SubJourneys 요소를 찾습니다. 요소가 없으면 User Journeys 요소 뒤를 추가합니다. 그런 다음, 다음 하위 여정을 추가합니다.
<!--
<SubJourneys>-->
<SubJourney Id="PasswordReset" Type="Call">
<OrchestrationSteps>
<!-- Validate user's email address. -->
<OrchestrationStep Order="1" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="PasswordResetUsingEmailAddressExchange" TechnicalProfileReferenceId="LocalAccountDiscoveryUsingEmailAddress" />
</ClaimsExchanges>
</OrchestrationStep>
<!-- Collect and persist a new password. -->
<OrchestrationStep Order="2" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="NewCredentials" TechnicalProfileReferenceId="LocalAccountWritePasswordUsingObjectId" />
</ClaimsExchanges>
</OrchestrationStep>
</OrchestrationSteps>
</SubJourney>
<!--
</SubJourneys>-->
사용자 경험 준비
다음으로 암호를 잊어버렸나요? 링크를 암호 잊음 하위 탐색에 연결하려면, CombinedSignInAndSignUp 단계의 ClaimsProviderSelection 요소에서 암호 잊음 하위 탐색 ID를 참조해야 합니다.
CombinedSignInAndSignUp 단계가 있는 사용자 지정 사용자 여정이 없는 경우 다음 단계를 완료하여 기존 등록 또는 로그인 사용자 경험을 복제합니다. 그렇지 않으면 다음 섹션으로 계속 진행합니다.
- 시작 팩에서 SocialAndLocalAccounts/ TrustFrameworkBase.xml 같은TrustFrameworkBase.xml파일을 엽니다.
- 를 포함하는
Id="SignUpOrSignIn"
요소의 전체 콘텐츠를 찾아 복사합니다. - SocialAndLocalAccounts/ TrustFrameworkExtensions.xml 같은TrustFrameworkExtensions.xml파일을 열고 UserJourneys 요소를 찾습니다. 해당 요소가 없으면 생성합니다.
- 2단계에서 복사한 UserJourney 요소의 전체 콘텐츠를 붙여넣어 UserJourneys 요소의 자식 요소를 만듭니다.
- 사용자 여정의 ID를 변경합니다. 예:
Id="CustomSignUpSignIn"
.
암호 재설정 하위 경로에 암호 재설정 링크 연결
사용자 경험에서 암호 잊기 하위 여정을 ClaimsProviderSelection으로 나타낼 수 있습니다. 이 요소를 추가하여 암호를 잊으셨나요? 링크를 암호 잊기 하위 경험에 연결합니다.
socialAndLocalAccounts/ TrustFrameworkExtensions.xml 같은TrustFrameworkExtensions.xml파일을 엽니다.
사용자 여정에서
Type="CombinedSignInAndSignUp"
또는Type="ClaimsProviderSelection"
을 포함하는 오케스트레이션 단계 요소를 찾습니다. 일반적으로 첫 번째 오케스트레이션 단계입니다. ClaimsProviderSelections 요소에는 사용자가 로그인하는 데 사용할 수 있는 ID 공급자 목록이 포함되어 있습니다. 다음 줄을 추가합니다.<ClaimsProviderSelection TargetClaimsExchangeId="ForgotPasswordExchange" />
다음 오케스트레이션 단계에서 다음 줄을 추가하여 ClaimsExchange 요소를 추가합니다.
<ClaimsExchange Id="ForgotPasswordExchange" TechnicalProfileReferenceId="ForgotPassword" />
현재 단계와 다음 단계 사이에 다음 오케스트레이션 단계를 추가합니다. 추가하는 새 오케스트레이션 단계는 isForgotPassword 클레임이 있는지 여부를 확인합니다. 클레임이 있는 경우 암호 재설정 하위 과정을 호출합니다.
<OrchestrationStep Order="3" Type="InvokeSubJourney"> <Preconditions> <Precondition Type="ClaimsExist" ExecuteActionsIf="false"> <Value>isForgotPassword</Value> <Action>SkipThisOrchestrationStep</Action> </Precondition> </Preconditions> <JourneyList> <Candidate SubJourneyReferenceId="PasswordReset" /> </JourneyList> </OrchestrationStep>
새 오케스트레이션 단계를 추가한 후 1에서 N으로의 정수를 건너뛰지 않고 단계를 순차적으로 다시 계산합니다.
실행할 사용자 여정 설정
사용자 경험을 수정하거나 만들었으므로 이제 신뢰 당사자 섹션에서 이 사용자 지정 정책에 대해 Azure AD B2C가 실행되는 과정을 지정합니다.
신뢰 당사자 요소가 있는 파일(예: SocialAndLocalAccounts/SignUpOrSignin.xml)을 엽니다.
RelyingParty 요소에서 DefaultUserJourney 요소를 찾습니다.
ClaimsProviderSelections를 추가한 사용자 경험의 ID와 일치하도록 DefaultUserJourney ReferenceId를 업데이트합니다.
<RelyingParty>
<DefaultUserJourney ReferenceId="CustomSignUpSignIn" />
...
</RelyingParty>
앱에 비밀번호 찾기 프로세스를 표시하기
애플리케이션은 암호 잊기 사용자 흐름을 사용하여 사용자가 로그인했는지 여부를 감지해야 할 수 있습니다. isForgotPassword 클레임에는 해당 클레임이 수행되었음을 나타내는 부울 값이 포함되어 있습니다. 클레임은 애플리케이션으로 전송되는 토큰에서 발급할 수 있습니다. 필요한 경우 신뢰 당사자 섹션의 출력 클레임에 isForgotPassword를 추가합니다. 애플리케이션 은 isForgotPassword 클레임을 확인하여 사용자가 암호를 재설정하는지 여부를 확인할 수 있습니다.
<RelyingParty>
<OutputClaims>
...
<OutputClaim ClaimTypeReferenceId="isForgotPassword" DefaultValue="false" />
</OutputClaims>
</RelyingParty>
사용자 지정 정책 업로드
- Azure Portal에 로그인합니다.
- 여러 테넌트에 액세스할 수 있는 경우 위쪽 메뉴에서 설정 아이콘을 선택하여 디렉터리 + 구독 메뉴에서 Azure AD B2C 테넌트로 전환합니다.
- Azure Portal에서 Azure AD B2C를 검색하고 선택합니다.
- 정책 아래의 메뉴에서 ID 환경 프레임워크를 선택합니다.
-
사용자 지정 정책 업로드를 선택합니다. 다음 순서대로 변경한 정책 파일을 업로드합니다.
- 정책의 기본 파일(예: TrustFrameworkBase.xml)입니다.
- 확장 정책(예: TrustFrameworkExtensions.xml.)
- 신뢰 파티 정책(예: SignUpSignIn.xml.)
전자 메일 변경 단추 숨기기(선택 사항)
전자 메일을 확인한 후에도 사용자는 전자 메일 변경을 선택하고 다른 전자 메일 주소를 입력한 다음 전자 메일 확인을 반복할 수 있습니다. 전자 메일 변경 단추를 숨기려면 CSS를 수정하여 대화 상자에서 연결된 HTML 요소를 숨길 수 있습니다. 예를 들어 다음 CSS 항목을 추가하여 HTML 템플릿을 사용하여 selfAsserted.html 사용자 인터페이스를 사용자 지정할 수 있습니다.
<style type="text/css">
.changeClaims
{
visibility: hidden;
}
</style>
암호 재설정 흐름 테스트
- 테스트하려는 등록 또는 로그인 사용자 흐름(권장 유형)을 선택합니다.
- 사용자 흐름 실행을 선택합니다.
-
애플리케이션의 경우 이전에 등록한 webapp1이라는 웹 애플리케이션을 선택합니다.
회신 URL에는
https://jwt.ms
가 표시되어야 합니다. - 사용자 흐름 실행을 선택합니다.
- 등록 또는 로그인 페이지에서 암호를 잊으셨나요?를 선택합니다.
- 이전에 만든 계정의 전자 메일 주소를 확인한 다음 계속을 선택합니다.
- 표시되는 대화 상자에서 사용자의 암호를 변경한 다음 계속을 선택합니다. 토큰이 반환
https://jwt.ms
되고 브라우저가 이를 표시합니다. - 반환 토큰의 isForgotPassword 클레임 값을 확인합니다. 존재하고
true
로 설정된 경우, 사용자가 암호를 재설정한 것입니다.
암호 재설정 정책(레거시)
셀프 서비스 암호 재설정 환경을 사용하도록 설정하지 않은 경우 이 링크를 선택하면 암호 재설정 사용자 흐름이 자동으로 트리거되지 않습니다. 대신 오류 코드 AADB2C90118
가 애플리케이션에 반환됩니다. 애플리케이션은 인증 라이브러리를 다시 초기화하여 Azure AD B2C 암호 재설정 사용자 흐름을 인증하여 이 오류 코드를 처리해야 합니다.
다음 다이어그램은 프로세스를 보여 줍니다.
- 애플리케이션에서 사용자는 로그인을 선택합니다. 앱은 권한 부여 요청을 시작하고 사용자가 로그인을 완료할 수 있도록 Azure AD B2C로 리디렉션합니다. 권한 부여 요청은 등록 또는 로그인 정책 이름(예: B2C_1_signup_signin)을 지정합니다.
- 사용자가 암호를 잊으셨나요? 링크를 선택합니다. Azure AD B2C는 애플리케이션에
AADB2C90118
오류 코드를 반환합니다. - 애플리케이션은 오류 코드를 처리하고 새 권한 부여 요청을 시작합니다. 권한 부여 요청은 암호 재설정 정책 이름(예: B2C_1_pwd_reset)을 지정합니다.
ASP.NET 샘플에서 사용자 흐름이 연결되는 방법에 대한 기본 데모를 볼 수 있습니다.
사용자 암호 재설정 절차 만들기
애플리케이션 사용자가 암호를 재설정할 수 있도록 하려면 암호 재설정 사용자 흐름을 만듭니다.
- Azure Portal에서 Azure AD B2C 테넌트 개요로 이동합니다.
- 정책의 왼쪽 메뉴에서 사용자 흐름을 선택한 다음 새 사용자 흐름을 선택합니다.
- 사용자 흐름 만들기에서 암호 재설정 사용자 흐름을 선택합니다.
- 버전 선택에서권장을 선택한 다음 만들기를 선택합니다.
- 이름에 대해 사용자 흐름에 대한 이름을 입력합니다. 예를 들어 passwordreset1입니다.
- ID 공급자의 경우 사용자 이름을 사용하여 암호 재설정 또는 전자 메일 주소를 사용하여 암호 재설정을 사용하도록 설정합니다.
- 다단계 인증에서 사용자가 두 번째 인증 방법을 사용하여 ID를 확인하도록 요구하려면 메서드 유형과 다단계 인증을 적용할 시기를 선택합니다. 자세히알아보세요.
- 조건부 액세스에서 Azure AD B2C 테넌트에 대한 조건부 액세스 정책을 구성하고 이 사용자 흐름에서 사용하려는 경우 조건부 액세스 정책 적용 확인란을 선택합니다. 정책 이름을 지정할 필요가 없습니다. 자세히알아보세요.
- 애플리케이션 클레임 아래에서 자세히 표시를 선택합니다. 애플리케이션으로 다시 전송되는 권한 부여 토큰에서 반환하려는 클레임을 선택합니다. 예를 들어 사용자의 개체 ID를 선택합니다.
- 확인을 선택합니다.
- 만들기를 선택하여 사용자 흐름을 추가합니다. B2C_1 접두사는 이름에 자동으로 추가됩니다.
사용자 흐름 테스트
사용자 흐름을 테스트하려면 다음을 수행합니다.
- 만든 사용자 흐름을 선택합니다. 사용자 흐름 개요 페이지에서 사용자 흐름 실행을 선택합니다.
-
애플리케이션의 경우 이전에 등록한 경우 webapp1이라는 웹 애플리케이션과 같이 테스트하려는 웹 애플리케이션을 선택합니다.
회신 URL은 다음과 여야
https://jwt.ms
합니다. - 사용자 흐름 실행을 선택하고 암호를 재설정하려는 계정의 전자 메일 주소를 확인한 다음 계속을 선택합니다.
- 암호를 변경한 다음 계속을 선택합니다. 토큰이 반환
https://jwt.ms
되고 브라우저가 이를 표시합니다.
암호 재설정 정책 만들기
사용자 지정 정책은 사용자 경험을 정의하기 위해 Azure AD B2C 테넌트에 업로드하는 XML 파일 집합입니다. 등록 및 로그인, 암호 재설정 및 프로필 편집 정책을 포함하여 몇 가지 미리 빌드된 정책이 있는 시작 팩 을 제공합니다. 자세한 내용은 Azure AD B2C에서 사용자 지정 정책 시작을 참조하세요.
Azure AD B2C 사용자 흐름 및 사용자 지정 정책 문제 해결
애플리케이션은 Azure B2C 서비스에서 오는 특정 오류를 처리해야 합니다. Azure AD B2C의 사용자 흐름 및 사용자 지정 정책 문제를 해결하는 방법을 알아봅니다.
관련 콘텐츠
강제 암호 재설정을 설정합니다.