在azure活動目錄B2C中,是否有辦法根據電子郵件地址池限制註冊? 或者我可以預先註冊帳戶,那麼用戶將不得不選擇密碼或使用谷歌或Facebook帳戶?根據電子郵件地址池或預註冊帳戶的Azure活動目錄限制註冊
回答
Azure AD B2C中沒有內置機制來限制註冊到特定用戶/電子郵件地址。您可以通過Azure AD B2C feedback forum申請。
但是,你可以自己實現:
- 有一個自定義屬性,以確定用戶是否是「認可」或不。您可以讓用戶自行註冊,並且您可以創建經驗或流程來查詢Azure AD Graph,以獲取尚未獲得「批准」的用戶,然後批准或刪除它們。
- 建立邀請流程。當您邀請用戶時,您需要通過Azure AD圖創建用戶。然後,您將引導您的用戶使用密碼重置策略作爲其「帳戶驗證」流程。 這僅適用於本地帳戶,因爲您無法預先創建由社交帳戶支持的用戶。
這已經回答了,但一對夫婦的其他選項,
在一個自定義策略您可以創建一個OIDC連接到另一個Azure的租戶,然後不有一個註冊鏈接,但只是登錄
或者你可以有一個自定義註冊策略,檢查用戶的電子郵件地址對預先定義的列表,你可以保存在存儲,然後結束e旅程,如果你不想讓他們繼續
@saca提到的邀請流程的工作示例是here。
在WingTipToysWebApplication
項目中,UserController
控制器類有兩種操作方法,Migrate
和Activate
。
Migrate
方法使用隨機密碼創建本地帳戶。
的Activate
方法執行以下步驟:
- 它集稱爲本地帳戶的ActivationStatus自定義屬性設置爲「待定」。
- 它向本地帳戶的電子郵件地址發送簽名的兌換鏈接。此兌換鏈接包含此電子郵件地址和一個現時值。此隨機數值確保兌換鏈接只能使用一次。
- 它將電子郵件地址和隨機數值保存在數據庫記錄中。
兌換鏈路由在WingTipGamesWebApplication
項目的ActivationController
控制器類的Redeem
動作方法處理。
該控制器動作然後傳遞的電子郵件地址和隨機數的值,作爲「verified_email」和「隨機數」的權利要求,從兌換鏈接到激活政策是here。
的激活政策聲明這些權利要求輸入聲明:
<TrustFrameworkPolicy>
<RelyingParty>
<DefaultUserJourney ReferenceId="Activation" />
<TechnicalProfile Id="Activation">
<InputClaims>
<InputClaim ClaimTypeReferenceId="extension_Nonce" />
<InputClaim ClaimTypeReferenceId="extension_VerifiedEmail" />
</InputClaims>
</TechnicalProfile>
</RelyingParty>
</TrustFrameworkPolicy>
的激活用戶旅程的第一個編制步驟執行LocalAccount的激活技術簡介:
<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>
此技術檔案通過調用API驗證電子郵件地址和隨機數值後端(見WingTipIdentityWebApplication
項目AccountController
控制器類的CheckNonce
操作方法),這是由ClassicAccount-CheckNonce技術簡介表示:
<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後端驗證的電子郵件地址,並在現時值數據庫記錄。如果電子郵件地址確實存在,並且該電子郵件地址的隨機數值有效(即尚未使用),則API後端返回200 OK,新用戶可以繼續執行激活的第二個編排步驟用戶旅程(即重置本地帳戶的隨機密碼)。如果不是,那麼它返回409衝突並顯示一條錯誤消息,由B2C向最終用戶顯示。
- 1. C2DM註冊郵件帳戶
- 2. 註冊不帶電子郵件地址的Firebase用戶
- 3. 電子郵件激活註冊表格
- 4. Joomla電子郵件註冊
- 5. 電子郵件地址已經註冊,甚至註冊新的電子郵件joomla
- 6. 用戶註冊電子郵件驗證
- 7. Django註冊限制到特定域名的電子郵件地址
- 8. 自動註冊電子郵件
- 9. 在Drupal帳戶註冊期間自動生成電子郵件帳戶?
- 10. 註冊Actuate iServer Express電子郵件帳戶
- 11. 已經註冊的電子郵件地址
- 12. 如何防止重複的電子郵件地址被註冊?
- 13. django註冊不能設置「從」電子郵件地址認證電子郵件
- 14. Django註冊表和註冊獨特的電子郵件形式
- 15. Laravel 4.1使用電子郵件激活的新用戶註冊
- 16. 檢查一些電子郵件地址是否在gravatar註冊?
- 17. Android - 通過電子郵件地址註冊和驗證
- 18. 僅在註冊過程中實現.edu電子郵件地址
- 19. 當新用戶註冊時發送激活電子郵件
- 20. 軌道 - 電子郵件激活後用戶註冊
- 21. 註冊用戶的激活郵件MVC
- 22. PJSip帳戶註冊
- 23. Drupal帳戶註冊
- 24. mysqli的註冊腳本,檢查用戶或電子郵件exsist
- 25. 處理電子郵件中的錯別字或註冊用戶
- 26. 註冊後激活用戶帳戶
- 27. 活動註冊
- 28. RoR設計用電子郵件或用戶名註冊
- 29. 使用任何電子郵件ID的用戶註冊郵件
- 30. 使用未註冊的電子郵件地址登錄會引發異常