【问题标题】:Issues with the"CreateRandomString" function in B2C custom policiesB2C 自定义策略中的“CreateRandomString”函数问题
【发布时间】:2021-04-22 01:50:03
【问题描述】:

对于以下代码,使用“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 之间的随机数,它总是返回 5。

对于 1000 个值,始终返回 547。 对于 100 个值,始终返回 54。 对于 10 个值,始终返回 5。 对于 3 个值,始终返回 1。

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

我可以做些什么来以与 C# Random 方法相同的方式获取随机数吗?

【问题讨论】:

    标签: azure-ad-b2c azure-ad-b2c-custom-policy


    【解决方案1】:

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

    [可选] 仅适用于 INTEGER randomGeneratorType。指定随机值的种子。注意:相同的种子产生相同的随机数序列。

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

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

    <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

    【讨论】:

    • 很明显,我错过了那一点文档!是的,现在工作。但是同意,想知道种子的目的是什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多