在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. 使用未注册的电子邮件地址登录会引发异常