하늘빛 활성 디렉토리 B2C에서 전자 메일 주소 풀에 따라 등록을 제한 할 수있는 방법이 있습니까? 비밀번호를 선택하거나 Google 또는 Facebook 계정을 사용해야 만 계정을 등록 할 수 있습니까?이메일 주소 풀 또는 사전 등록 계정에 따라 Azure 활성 디렉토리 제한 등록
답변
특정 사용자/이메일 집합에 등록을 제한하는 Azure AD B2C에는 기본 제공 메커니즘이 없습니다. Azure AD B2C feedback forum을 통해 요청할 수 있습니다. 사용자가 '승인'여부 여부를 확인하는 사용자 지정 특성을 갖는
- :
그러나하여이 자신을 구현할 수 있습니다. 사용자가 직접 등록 할 수있게하고 "승인"되지 않은 사용자에 대해 Azure AD 그래프를 쿼리 한 후 승인하거나 삭제하는 경험이나 흐름을 만듭니다.
- 초대 흐름 빌드. 사용자를 초대 할 때 Azure AD 그래프를 통해 사용자를 만듭니다. 그런 다음 사용자를 비밀번호 재설정 정책으로 "계정 확인"흐름으로 안내합니다. 이것은 소셜 계정으로 백업 된 사용자를 미리 만들 수 없기 때문에 로컬 계정에서만 작동합니다.
이 사용자 정의 정책
당신이 다음하지 다른 푸른 세입자에 OIDC 연결을 만들 수 있습니다, Azure AD B2C - approval upon sign up?이 대답되었지만 다른 몇 가지 옵션과 유사합니다 가입 링크가 있지만 로그인 만 하시길 바랍니다.
또는 사용자의 전자 메일 주소를 미리 정의 된 목록과 비교하여 저장 장치에 보관 한 다음 끝낼 수있는 사용자 지정 가입 정책이있을 수 있습니다 당신이 그들을 계속하고 싶지 않다면 여행하기
@saca에 언급 된 초대 흐름의 작업 샘플은 here입니다.
WingTipToysWebApplication
프로젝트의 경우 UserController
컨트롤러 클래스에는 Migrate
과 Activate
의 두 가지 작업 방법이 있습니다.
Migrate
메서드는 임의의 암호로 로컬 계정을 만듭니다.
Activate
방법은 다음의 단계를 실행한다 :
- 그것은 "대기"로컬 계정 ActivationStatus라는 정의 속성을 설정한다.
- 로컬 보너스 이메일 주소로 서명 된 보너스 링크를 보냅니다. 이 보너스 링크에는이 이메일 주소와 넌스 가치가 포함되어 있습니다. 이 넌스 값은 사용 링크를 한 번만 사용할 수 있음을 보장합니다.
- 전자 메일 주소와 nonce 값을 데이터베이스 레코드에 저장합니다.
환매 링크가 WingTipGamesWebApplication
프로젝트의 ActivationController
컨트롤러 클래스의 Redeem
동작 방법에 의해 처리된다.
이 제어 동작은 here 인 활성화 정책 구속 링크에서 "verified_email"및 "넌스"항과 같은 이메일 주소와 논스 값을 전달한다.
<TechnicalProfile Id="LocalAccount-Activation">
<DisplayName>WingTip Account</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="ContentDefinitionReferenceId">api.localaccount.activation</Item>
<Item Key="IpAddressClaimReferenceId">IpAddress</Item>
</Metadata>
<CryptographicKeys>
<Key Id="issuer_secret" StorageReferenceId="TokenSigningKeyContainer" />
</CryptographicKeys>
<IncludeInSso>false</IncludeInSso>
<InputClaimsTransformations>
<InputClaimsTransformation ReferenceId="CreateEmailFromVerifiedEmail" />
</InputClaimsTransformations>
<InputClaims>
<InputClaim ClaimTypeReferenceId="extension_VerifiedEmail" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="extension_VerifiedEmail" Required="true" />
<OutputClaim ClaimTypeReferenceId="authenticationSource" />
<OutputClaim ClaimTypeReferenceId="objectId" />
<OutputClaim ClaimTypeReferenceId="strongAuthenticationPhoneNumber" />
<OutputClaim ClaimTypeReferenceId="sub" />
<OutputClaim ClaimTypeReferenceId="userPrincipalName" />
</OutputClaims>
<ValidationTechnicalProfiles>
<ValidationTechnicalProfile ReferenceId="ClassicAccount-CheckNonce" />
<ValidationTechnicalProfile ReferenceId="AzureActiveDirectoryStore-ReadUserByEmail-ThrowIfNotExists" />
</ValidationTechnicalProfiles>
</TechnicalProfile>
:
가
<TrustFrameworkPolicy>
<RelyingParty>
<DefaultUserJourney ReferenceId="Activation" />
<TechnicalProfile Id="Activation">
<InputClaims>
<InputClaim ClaimTypeReferenceId="extension_Nonce" />
<InputClaim ClaimTypeReferenceId="extension_VerifiedEmail" />
</InputClaims>
</TechnicalProfile>
</RelyingParty>
</TrustFrameworkPolicy>
활성화 사용자 여행의 제 편성 단계는 에는 LocalAccount 가입비 기술 프로파일을 실행한다 : 입력 주장으로
활성화 정책은 이러한 요구를 선언
이 기술 프로필은 API를 호출하여 전자 메일 주소와 nonce 값의 유효성을 검사합니다.
<TechnicalProfile Id="ClassicAccount-CheckNonce">
<DisplayName>Classic Account Check Nonce</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="ServiceUrl">https://wingtipidentityb2c.azurewebsites.net/api/account/checknonce</Item>
<Item Key="AuthenticationType">Basic</Item>
<Item Key="HttpBinding">POST</Item>
<Item Key="SendClaimsIn">Form</Item>
</Metadata>
<CryptographicKeys>
<Key Id="BasicAuthenticationUsername" StorageReferenceId="ClassicAccountClientId" />
<Key Id="BasicAuthenticationPassword" StorageReferenceId="ClassicAccountClientSecret" />
</CryptographicKeys>
<InputClaims>
<InputClaim ClaimTypeReferenceId="extension_verifiedEmail" PartnerClaimType="userName" />
<InputClaim ClaimTypeReferenceId="extension_Nonce" PartnerClaimType="nonce" />
</InputClaims>
<UseTechnicalProfileForSessionManagement ReferenceId="SSOSession-Noop" />
</TechnicalProfile>
이 API 백엔드는 이메일 주소와의 논스 값을 유효화 : 백엔드 ClassicAccount-CheckNonce 기술 프로파일로 표시되는합니다 (WingTipIdentityWebApplication
프로젝트에서 AccountController
컨트롤러 클래스의 CheckNonce
동작 방법 참조) 데이터베이스 레코드. 이메일 주소가 있고이 이메일 주소에 대해 nonce 값이 유효하지 않은 경우 (즉, 사용되지 않은 경우) API 백엔드는 200 OK를 반환하고 새 사용자는 사용자의 두 번째 오케스트레이션 단계로 계속 진행할 수 있습니다. 여행 (로컬 계정의 임의의 비밀번호를 재설정하는 것). 그렇지 않으면 최종 사용자에게 B2C로 표시되는 오류 메시지와 함께 409 충돌을 반환합니다.