B2C 自定义策略中 "CreateRandomString" 函数的问题

Issues with the"CreateRandomString" function in B2C custom policies

对于以下代码,使用“CreateRandomString”:

<ClaimsTransformations>
            <ClaimsTransformation Id="SetRandomNumber" TransformationMethod="CreateRandomString">
                <InputParameters>
                    <InputParameter Id="randomGeneratorType" DataType="string" Value="INTEGER"/>
                    <InputParameter Id="maximumNumber" DataType="int" Value="10"/>
                    <InputParameter Id="seed" DataType="int" Value="1234567890"/>
                    <InputParameter Id="stringFormat" DataType="string" Value="{0}"/>
                    <InputParameter Id="base64" DataType="boolean" Value="false"/>
                </InputParameters>
                <OutputClaims>
                    <OutputClaim ClaimTypeReferenceId="randomNumber" TransformationClaimType="outputClaim"/>
                </OutputClaims>
            </ClaimsTransformation>
        </ClaimsTransformations>

我想要一个 0 到 10 之间的随机数,它 总是 returns 5.

对于 1000 个值,总是 returns 547。 对于 100 个值,总是 returns 54。 对于 10 个值,总是 returns 5。 对于 3 个值,总是 returns 1.

似乎只是在范围中间选择一个数字。

有什么方法可以像 C# Random 方法一样获取随机数吗?

文档提到了种子值的以下注释:

[Optional] For INTEGER randomGeneratorType only. Specify the seed for the random value. Note: same seed yields same sequence of random numbers.

种子值可让您确保获得相同的序列,以防您的策略出于某种原因依赖于该序列。

如文档中的示例所述,您应该在调用此转换时完全消除种子值,以保证每次都有不同的序列。

<ClaimsTransformation Id="SetRandomNumber" TransformationMethod="CreateRandomString">
  <InputParameters>
    <InputParameter Id="randomGeneratorType" DataType="string" Value="INTEGER" />
    <InputParameter Id="maximumNumber" DataType="int" Value="1000" />
    <InputParameter Id="stringFormat" DataType="string" Value="OTP_{0}" />
    <InputParameter Id="base64" DataType="boolean" Value="false" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="randomNumber" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>

尝试消除种子值,因为它应该没问题。

来源:https://docs.microsoft.com/en-us/azure/active-directory-b2c/string-transformations#createrandomstring