azure ADB2C策略在ValidationTechnicalProfile上失败

lhcgjxsq  于 2023-06-24  发布在  DB2
关注(0)|答案(1)|浏览(146)

我遇到了一个问题,在我的ValidationTechnicalProfile中,

<ValidationTechnicalProfile ReferenceId="REST-acquireaccesstoken"/>

如果我从ValidationTechnicalProfiles中删除此选项,登录将正常工作,但使用此ValidationTechnicalProfile时,登录将失败,并出现以下情况:
“Key”:“Exception”,“Value”:{“种类”:“已处理”,“HResult”:“80131500”,“留言”:用户名或密码无效。{“IsPolicySpecificError”:联系我们
如果我在OrchestrationStep中调用它,这个相同的技术配置文件工作正常。appinsight日志也没有帮助,我所看到的都是上面的错误。这里是技术概况

<TechnicalProfile Id="REST-AcquireAccessToken">
          <DisplayName></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://login.microsoftonline.com/xxxxxxxxxx/oauth2/v2.0/token</Item>
            <Item Key="AuthenticationType">Basic</Item>
            <Item Key="SendClaimsIn">Form</Item>
            <Item Key="AllowInsecureAuthInProduction">true</Item>
          </Metadata>
          <CryptographicKeys>
            <Key Id="BasicAuthenticationUsername" StorageReferenceId="B2C_1A_ClientId" />
            <Key Id="BasicAuthenticationPassword" StorageReferenceId="B2C_1A_Secret" />
          </CryptographicKeys>
          <InputClaims>
            <InputClaim ClaimTypeReferenceId="grant_type" DefaultValue="client_credentials" AlwaysUseDefaultValue="true" />
            <InputClaim ClaimTypeReferenceId="scope" DefaultValue="api://xxxxxxxx/.default" AlwaysUseDefaultValue="true" />
          </InputClaims>
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="bearerToken" PartnerClaimType="access_token" />
          </OutputClaims>
          <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
        </TechnicalProfile>

请帮帮忙

2guxujil

2guxujil1#

grant_type和scope声明在REST-AcquireAccessToken和login-NonInteractive技术配置文件中使用。我相信您在REST-AcquireAccessToken技术配置文件中使用的值覆盖了login-NonInteractive中的默认值。
在REST-AcquireAccessToken技术配置文件中使用具有不同名称的声明沿着正确的PartnerClaimType。
示例:

<!-- ClaimsSchema -->

<ClaimType Id="IntApigrant_type">
    <DisplayName>Grant type</DisplayName>
    <DataType>string</DataType>
</ClaimType>

<ClaimType Id="IntApiscope">
    <DisplayName>scope</DisplayName>
    <DataType>string</DataType>
</ClaimType>

<!-- REST-AcquireAccessToken -->

<InputClaims>
    <InputClaim ClaimTypeReferenceId="IntApigrant_type" PartnerClaimType="grant_type" DefaultValue="client_credentials" AlwaysUseDefaultValue="true" />
    <InputClaim ClaimTypeReferenceId="IntApiscope" PartnerClaimType="scope" DefaultValue="{Settings:IntermediateApiScope}" AlwaysUseDefaultValue="true" />
</InputClaims>

或者,您可以在login-NonInteractive中为这两个声明设置AlwaysUseDefaultValue=“true”。

相关问题