Я должен предварительно заполнить идентификатор электронной почты пользователя в пути пользователя, используя идентификатор объекта, переданный в виде строки запроса в URL авторизации.
Я ссылался на непротокольный параметр распознаватели утверждений
Но я получаю исключение, когда пытаюсь читать с использованием ObjectId.
TechnicalProfile,
<TechnicalProfile Id="AAD-UserReadUsingObjectIdNew">
<Metadata>
<Item Key="Operation">Read</Item>
<Item Key="RaiseErrorIfClaimsPrincipalDoesNotExist">true</Item>
<Item Key="IncludeClaimResolvingInClaimsHandling">true</Item>
</Metadata>
<IncludeInSso>false</IncludeInSso>
<InputClaims>
<InputClaim ClaimTypeReferenceId="objectId" DefaultValue="{OAUTH-KV:objId}"/>
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="objectId" />
<OutputClaim ClaimTypeReferenceId="signInName" />
<!-- Optional claims -->
<OutputClaim ClaimTypeReferenceId="displayName" />
<OutputClaim ClaimTypeReferenceId="otherMails" />
<OutputClaim ClaimTypeReferenceId="givenName" />
<OutputClaim ClaimTypeReferenceId="surname" />
<OutputClaim ClaimTypeReferenceId="country" />
<OutputClaim ClaimTypeReferenceId="userPrincipalName" />
<OutputClaim ClaimTypeReferenceId="extension_creationsource" />
</OutputClaims>
<IncludeTechnicalProfile ReferenceId="AAD-Common" />
</TechnicalProfile>
UserJourney,
<UserJourney Id="PasswordChange">
<OrchestrationSteps>
<OrchestrationStep Order="1" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="LocalAccountRead" TechnicalProfileReferenceId="AAD-UserReadUsingObjectIdNew" />
</ClaimsExchanges>
</OrchestrationStep>
<OrchestrationStep Order="2" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="LocalAccountLogin" TechnicalProfileReferenceId="LocalAccountLoginUsingObjectIdAndPassword" />
</ClaimsExchanges>
</OrchestrationStep>
<OrchestrationStep Order="3" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />
</OrchestrationSteps>
<ClientDefinition ReferenceId="DefaultWeb" />
</UserJourney>
URL,
https://tenant.b2clogin.com/tenant.onmicrosoft.com/oauth2/v2.0/authorize?p=B2C_1A_PasswordChange_Mob_HH_NewFlow&client_id=xxxxxx-2415-4bb9-9529-131edxxxxx&nonce=defaultNonce&redirect_uri=https%3A%2F%2Flocalhost%3A44321%2F&scope=openid&response_type=id_token&prompt=login&objId=xxxxxx-5e54-4126-9982-bexxxxxx
AppInsight,
"Statebag": {
"Complex-CLMS": {
"objectId": "{OAUTH-KV:objId}"
}
"Message": "An error occurred while retrieving User using identifier claim type \"objectId\" in tenant \"4722b4c2-6388-4c69-9cfb-f950ea762665\". Error returned was 400/Request_BadRequest: Bad request. Please fix the request before retrying."
Примечания:
Если я выполняю вызов API Rest и отправляю этот ObjectId как inputclaim, он разрешает значение, и я могуправильно получить значение идентификатора объекта в теле запроса API.Но если я использую его для чтения из AAD, это не разрешает значение
Обновление:
Я пытался проверить подсказки входа в систему работает согласно Ссылка
Но у меня это не сработало.Тогда я использовал политику signinorsignup из startpack.Это начало работать для signinorsignup.Итак, я обнаружил, что
'{OIDC: LoginHint}' работает только на шаге оркестровки CombinedSignInAndSignUp.Он не работает в «ClaimsProviderSelection».
Я думаю, именно поэтому «{OAUTH-KV: objId}» также не работает для меня, так как я использую «ClaimsProviderSelection»
Любая помощь будет оценена.Пожалуйста, помогите мне исправить это.