创建用户或登录时,将调用一个函数。然后,该功能将触发 Logic App 。逻辑应用需要向新添加的用户发送电子邮件。
这里是捕获来自B2C的输入的模型。
public class InputClaimsDto
{
public string oid { get; set; }
public string firstName { get; set; }
public string lastName { get; set; }
public string email { get; set; }
}
除电子邮件外,所有字段均已填充。
这是完整的技术资料。
<!-- Custom Restful service -->
<TechnicalProfile Id="REST-API-SignUp">
<InputClaims>
<InputClaim ClaimTypeReferenceId="objectid" PartnerClaimType="oid" />
<InputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="firstName" />
<InputClaim ClaimTypeReferenceId="surname" PartnerClaimType="lastName" />
<!--I'm trying to return the email-->
<InputClaim ClaimTypeReferenceId="otherMails" PartnerClaimType="email" />
</InputClaims>
<OutputClaims>
//...
</OutputClaims>
</TechnicalProfile>
要退回电子邮件,我尝试使用email
,signInNames.emailAddress
,otherMails
,但是它不起作用。
如何返回电子邮件或其他任何数据。
感谢您的帮助。
在TrustFrameworkBse.xml中,电子邮件被定义为Email address that can be used to contact you.
<ClaimType Id="email">
<DisplayName>Email Address</DisplayName>
<DataType>string</DataType>
<DefaultPartnerClaimTypes>
<Protocol Name="OpenIdConnect" PartnerClaimType="email" />
</DefaultPartnerClaimTypes>
<UserHelpText>Email address that can be used to contact you.</UserHelpText>
<UserInputType>TextBox</UserInputType>
<Restriction>
<Pattern RegularExpression="^[a-zA-Z0-9.!#$%&'^_`{}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$" HelpText="Please enter a valid email address." />
</Restriction>
</ClaimType>
答案 0 :(得分:1)
这里缺少的链接是,在到达您的REST API调用之前,我们不知道email
是否是填充的声明。代码片段不足以说明问题。
在登录时引用AAD B2C入门包,该电子邮件包含在名为signInName
的声明中。在“注册”时,电子邮件被捕获到名为email
的声明中。
要标准化此情况,请在AAD-UserReadUsingObjectId
步骤之后调用您的REST API技术资料。在AAD-UserReadUsingObjectId
中,添加输出声明,如下所示:
<OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="signInNames.emailAddress" />
这意味着无论登录还是注册,我们都会读取目录属性signInNames.emailAddress
,并将其值插入到名为email
的声明中。
现在,当您调用REST API时,email
将始终具有一个值。您的REST API应该使用以下内容:
<InputClaim ClaimTypeReferenceId="email"/>