Средство разрешения утверждений Azure AD B2C: считывание сведений о пользователе с использованием objectId из строки запроса - PullRequest
0 голосов
/ 08 апреля 2019

Я должен предварительно заполнить идентификатор электронной почты пользователя в пути пользователя, используя идентификатор объекта, переданный в виде строки запроса в 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»

Любая помощь будет оценена.Пожалуйста, помогите мне исправить это.

...