如果在多个技术配置文件中定义了相同的输出声明,那么预期的行为是什么?
特别是如果技术配置文件发出输出声明,而稍后执行的另一个技术配置文件定义了相同的输出声明但在运行时没有发出声明,那么预期的行为是什么?
答案 0 :(得分:1)
如果有两个不同的OrchestrationSteps,每个都包含一个发出相同声明的TechnicalProfile,那么后面步骤中的TechnicalProfile将覆盖"声明的价值如果发出此类声明。
让我们采取一个特定的(虽然有点组成)的例子。
步骤1使用TechnicalProfile for SelfAsserted页面,通过" OutputClaim ClaimTypeReferenceId =" givenName""来询问用户的名字。 。用户填写名称" John"在这个页面上,继续。
第2步使用TechnicalProfile与Google的ClaimsExchange,可能也通过&#34; OutputClaim ClaimTypeReferenceId =&#34; givenName&#34;&#34;。< / p>
但是,在Google上创建帐户时,用户可能会注册或未注册其名字。如果名字可用(比如名字&#34; Lingeshwaran&#34;),那么谷歌将发出该声明,而B2C将使用它。在这种情况下,给定名称的第2步之后的最终结果值将是&#34; Lingeshwaran&#34;。
如果用户在创建Google帐户时没有填写他们的名字,那么Google会在其令牌中发出的声明中缺少该名称。结果,现有的&#34; givenName&#34;声明不会被覆盖,并且在给定名称的第2步之后得到的值将是&#34; John&#34;。