在ID为“ AAD-UserReadUsingObjectId”策略的技术资料中定义的ID为“ objectId”的查找声明找不到声明

时间:2019-05-31 01:51:45

标签: azure-ad-b2c

我关注了B2C-ADFS文章。

我连接到ADFS,成功进行了身份验证,但是B2C抛出了以上错误。

我正在使用最新的SocialandLocalAccounts模板。

扩展XML中的我的XML。

<ClaimsProvider>
            <Domain>ABC.com</Domain>
            <DisplayName>ABC ADFS</DisplayName>
            <TechnicalProfiles>
                <TechnicalProfile Id="ABC-SAML2">
                    <DisplayName>ABC staff</DisplayName>
                    <Description>Login with your ADFS account</Description>
                    <Protocol Name="SAML2"/>
                    <Metadata>
                        <Item Key="WantsEncryptedAssertions">false</Item>
                        <Item Key="PartnerEntity">https://my-adfs.southeastasia.cloudapp.azure.com/federationmetadata/2007-06/federationmetadata.xml</Item>
                        <Item Key="XmlSignatureAlgorithm">Sha256</Item>
                    </Metadata>
                    <CryptographicKeys>
                        <Key Id="SamlAssertionSigning" StorageReferenceId="B2C_1A_SamlCert"/>
                        <Key Id="SamlMessageSigning" StorageReferenceId="B2C_1A_SamlCert"/>
                    </CryptographicKeys>
                    <OutputClaims>
                        <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="userPrincipalName" />
                        <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name"/>
                        <OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="family_name"/>
                        <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email"/>
                        <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name"/>
                        <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="ABC.com" />
                        <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication"/>
                    </OutputClaims>
                    <OutputClaimsTransformations>
                        <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName"/>
                        <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName"/>
                        <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId"/>
                        <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId"/>
                    </OutputClaimsTransformations>
                    <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop"/>
                </TechnicalProfile>
            </TechnicalProfiles>
        </ClaimsProvider>
    </ClaimsProviders>

    <UserJourneys>

        <UserJourney Id="SignUpSignInADFS">
            <OrchestrationSteps>
                <OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
                    <ClaimsProviderSelections>
                        <ClaimsProviderSelection ValidationClaimsExchangeId="LocalAccountSigninEmailExchange" />
                        <ClaimsProviderSelection TargetClaimsExchangeId="ABCExchange" />
                    </ClaimsProviderSelections>
                    <ClaimsExchanges>
                        <ClaimsExchange Id="LocalAccountSigninEmailExchange" TechnicalProfileReferenceId="SelfAsserted-LocalAccountSignin-Email" />
                    </ClaimsExchanges>
                </OrchestrationStep>
                <OrchestrationStep Order="2" Type="ClaimsExchange">
                    <Preconditions>
                        <Precondition Type="ClaimsExist" ExecuteActionsIf="true">
                            <Value>objectId</Value>
                            <Action>SkipThisOrchestrationStep</Action>
                        </Precondition>
                    </Preconditions>
                    <ClaimsExchanges>
                        <ClaimsExchange Id="SignUpWithLogonEmailExchange" TechnicalProfileReferenceId="LocalAccountSignUpWithLogonEmail" />
                        <ClaimsExchange Id="ABCExchange" TechnicalProfileReferenceId="ABC-SAML2" />
                    </ClaimsExchanges>
                </OrchestrationStep>
                <OrchestrationStep Order="3" Type="ClaimsExchange">
                    <ClaimsExchanges>
                        <ClaimsExchange Id="AADUserReadWithObjectId" TechnicalProfileReferenceId="AAD-UserReadUsingObjectId" />
                    </ClaimsExchanges>
                </OrchestrationStep>
                <OrchestrationStep Order="4" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />
            </OrchestrationSteps>
            <ClientDefinition ReferenceId="DefaultWeb" />
        </UserJourney>
    </UserJourneys>

这是ADFS在SAML令牌中返回的内容:

<AttributeStatement>
            <Attribute Name="userPrincipalName">
                <AttributeValue>user1@test.dev.com</AttributeValue>
            </Attribute>
            <Attribute Name="family_name">
                <AttributeValue>Test</AttributeValue>
            </Attribute>
            <Attribute Name="given_name">
                <AttributeValue>User1</AttributeValue>
            </Attribute>
            <Attribute Name="email">
                <AttributeValue>user1@company.com</AttributeValue>
            </Attribute>
            <Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name">
                <AttributeValue>User1 Test</AttributeValue>
            </Attribute>
            <Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress">
                <AttributeValue>user1@company.com</AttributeValue>
            </Attribute>
        </AttributeStatement> 

1 个答案:

答案 0 :(得分:0)

如上所述,请确保您使用的是“ SocialAndLocalAccounts”。